Annotation of parser3/www/htdocs/index.html, revision 1.178

1.104     paf         1: @USE
1.105     paf         2: /derived.p
1.145     paf         3: /operators.p
1.15      paf         4: 
1.72      paf         5: @auto[filespec]
                      6: $selffilespec[$filespec]
1.63      paf         7: #$form:here
1.131     paf         8: #$request:charset[UTF-8]
1.177     paf         9: $request:charset[windows-1251]
                     10: $response:charset[windows-1251]
1.112     paf        11: #$response:charset[UTF-8]
1.131     paf        12: #$response:charset[empty]
1.84      paf        13: #$response:content-type[$.value[text/html]$.charset[$response:charset]]
1.15      paf        14: 
1.171     paf        15: @postprocess[body]
1.60      paf        16: #<b>$body</b>
                     17: #$result[123]
1.171     paf        18: $body
                     19: <hr>
                     20: OK
1.37      paf        21: 
1.15      paf        22: @main[]
1.72      paf        23: #$a(123)
                     24: #^a.format[%.10u]
1.71      paf        25: #$result[111]
1.70      paf        26: #^f[a]
1.133     paf        27: #^connect[mysql://mdm:4b833ljq@db-mysql/mdm]{
1.88      paf        28: #      ^int:sql{select news_id from news where news_id=-1}[
1.143     paf        29: #      $.default{2}
1.88      paf        30: #      ]<br>
1.115     paf        31: #    ^hash::sql{bad}
1.88      paf        32: #    ^string:sql{select news_id from news where news_id=-1}[$.default{2}]
1.109     paf        33: #      ^file::load[text;^string:sql{select 'from sql server' }]
1.95      paf        34: #      ^string:sql{select '^^hello[]' }] $ORIGINS(1)
1.96      paf        35: #      ^process{       ^^h[]}
1.97      paf        36: #      ^process{^string:sql{select '1
                     37: #      ^^hello[]' }]   }
1.131     paf        38: #      ^double:sql{select '2*' ^; }
1.133     paf        39: #$card_sequence_expect_no(^double:sql{select 20020909131047 #card_sequence_expect_no from card_sequence})
                     40: #^card_sequence_expect_no.format[%15.f]
                     41: #}
1.49      paf        42: #^eval(2)
1.48      paf        43: #^tcrashlocaljunctionsv2[]
1.49      paf        44: #^tcrashlocaljunctions[]
1.50      paf        45: #^tjunctions[]
1.47      paf        46: #^replacetest[]
1.48      paf        47: #^matchoptionpp[]
1.46      paf        48: #^txdocxnodechild[]
1.44      paf        49: #^tclasses[]
1.43      paf        50: #$math:PI
                     51: #^b:method[]
1.42      paf        52: #^main[]
1.41      paf        53: #^errort[]
1.44      paf        54: #^tselectNumber[]
1.39      paf        55: #$result[hello]
1.36      paf        56: #^invaliddate2[]
                     57: #^process2[]
                     58: #^casehashtext[]
1.35      paf        59: #^subjvaltest[]
                     60: #^tableselect0[]
1.34      paf        61: #^memnotest1[]
1.32      paf        62: #^voidparams[]
1.31      paf        63: #^rolls2[]
1.30      paf        64: #^cacheexpireschanging[]
1.29      paf        65: #^cacheexpiresfixed[]
                     66: #^dateoffsets[]
                     67: #^exceptionTypes[]
1.28      paf        68: #^roll2[]
1.27      paf        69: #^rolls[]
1.25      paf        70: #^exceptions1[]
1.22      paf        71: #^locate_by_expr[]
1.18      paf        72: #^method_junction_params{...}
1.17      paf        73: #^verifyCookie[paf]
1.37      paf        74: #^execlangs[]
1.16      paf        75: #$t[^tobjeresult[]]$t.a
                     76: #^xmlprobs[]
1.15      paf        77: #^doubleprobs[]
                     78: #^math:random(-10)
                     79: #^divnamestop[]
                     80: #^arrayclone[]
                     81: #^operator_tricks[]
                     82: #^xoutputrusattr[]
                     83: #^xdocset1[]
                     84: #^regexp3[]
                     85: #^exec2[]
                     86: #^tlock[]
                     87: #^xmloutattrwithoutvalue[]
                     88: #^precisionProblem[]
                     89: #^xpath[]
                     90: #^ttablesetlang[]
                     91: #^ttime[]
                     92: #^tupper[]
                     93: #^treplace[]
                     94: #^xslt2[]
                     95: #^tcache2[]
                     96: #$ORIGINS(1)
                     97: #$t[^table::set{a b} ^table::set{c d}]
                     98: #^ttaintuntaint[]
                     99: #^tappend2[]
                    100: #^badvsnprintf[]
                    101: #^badoracequoting[]
                    102: #^badconstructors[]
                    103: #^xloadwrongtable[]
                    104: #^xsetwrongtable[]
                    105: #^if($form:test){y}{n}
                    106: #^tablecolumnerror[]
                    107: #^roll[]
                    108: #^tableset[]
                    109: #^math:PI.format{%.30f}
                    110: #^xchildren[]
                    111: #^thashforeach3[]
                    112: #^thashforeach2[]
                    113: #^thashforeach[]
                    114: #^thashdelete[]
                    115: #^connect[mysql://user:pass@cd.rinet.ru/db]{^void:sql{z} }
                    116: #^tappend[]
                    117: #^sappend[]
                    118: #^eval(10\3)<br>
                    119: #^tform[]
                    120: #^formattest[]
                    121: #^filelist[]
                    122: #^connect[mysql://user:pass@host]{ }
                    123: #^безнадёжна_попытка_поправить_непоправимое[]
                    124: #^tcache[]
                    125: #^thashfileexp[]
                    126: #^tcounter[]
                    127: #^tablehash[]
                    128: #j^hashfile[]
                    129: #^formclass[]
                    130: #^hren[]
                    131: #^domedit[]
                    132: #^domxslt[]
                    133: #^lsplit2[]
                    134: #^faceesize[]
                    135: #^imageresize[]
                    136: #^ifassignhash[]
                    137: #^tintdefault[]
                    138: #$response:status[404]
                    139: #^ifpasshash[]
                    140: #^movedir[]
                    141: #^replace[]
                    142: #^set[]
                    143: #^hash[]<hr>
                    144: #$t[^methresult[]] ->$t
                    145: #^terror[]
                    146: #^ssave[]
                    147: #^thash[]
                    148: #^tdef[]
                    149: #^ford[]
                    150: #^tif[]
1.84      paf       151: #^image[]
1.15      paf       152: #^response[]
                    153: #^regexp2[]
                    154: #^ttablerem[]
                    155: #^pcre[]
                    156: #^regexp[]<hr>
                    157: #^mail[]
                    158: #^fori[]
                    159: #^tconnect[]
                    160: #^xslt[]
                    161: #^header[]
1.53      paf       162: #^tablehasht[]
1.54      paf       163: #^datecreatestring[]
1.56      paf       164: #^mssqltypes1[]
                    165: #^badthrows[]
1.57      paf       166: #^xmlspace[]
                    167: #^counter[main.counter]
                    168: #^xpath2[]
                    169: #^callindirect[]
                    170: #^junctionprob[]
1.59      paf       171: #^datecreatestring2[]
                    172: #^tstoredproc[]
                    173: #^tstoredproc2[]
                    174: #^forkeys[]
1.60      paf       175: #^pngsize[]
1.61      paf       176: #^checkList[]
1.63      paf       177: #^datetest[]
1.65      paf       178: #^tserge[]
1.69      paf       179: #^envt[]
1.67      paf       180: #^selectt[]
                    181: #^select2[]
                    182: #^selectSingle2[]
                    183: #^selectString2[]
                    184: #^selectNumber2[]
                    185: #^selectBool2[]
                    186: #^xdoccreate[]
                    187: #^xdoccreatetag[]
1.70      paf       188: #^xdocload[]
1.67      paf       189: #^xdocstring[]
                    190: #^xdocsave[]
1.68      paf       191: #^div[]
                    192: #^datecreatestring3[]
1.73      paf       193: #^tfilespec[]
1.77      paf       194: #^tcrypt[]
1.74      paf       195: #^cryptdocsample[]
1.78      paf       196: #^tnormalize[]
1.83      paf       197: #^xmltransformbyxdoc[]
1.81      paf       198: #^sergestrandef[]
1.83      paf       199: #^tstdin[]
                    200: #^tfind[]
1.86      paf       201: #^mimet[]
1.92      paf       202: #^joinlimit[]
1.89      paf       203: #^tableclonelimit[]
1.91      paf       204: #^transparams[]
                    205: #^sendtests[]
1.93      paf       206: #^wwrapperpass[]
1.95      paf       207: #^badpos[]
1.98      paf       208: #^processtest[]
                    209: #^mail3[]
1.100     paf       210: #^datesaving[]
1.101     paf       211: #^badconstructor[]
1.103     paf       212: #^calendar[]
1.104     paf       213: #^monthdays(8)
                    214: #^xdoctypetest[]
1.105     paf       215: #^xtabletest[]
1.117     paf       216: #^staticstest[]
1.108     paf       217: #^staticstest2[]
1.115     paf       218: #^rbodytest[]
                    219: #^cookie[]
1.116     paf       220: #^cookieexpirestest[]
1.119     paf       221: #^postest[]
1.120     paf       222: #^voidpostest[]
1.122     paf       223: #^badcolumntest[]
1.124     paf       224: #^delimiters[]
1.125     paf       225: #^новый-split[]
1.127     paf       226: #^грязные-cookie[]
                    227: #^html-почта[]
                    228: #^badswitchtest[]
1.128     paf       229: #^okswitchtest[]
1.131     paf       230: #^cgit[]
1.132     paf       231: #^ttransformsep[]
1.133     paf       232: #^calltest[]
1.134     paf       233: #^xpath3[]
1.139     paf       234: #^doubleliterals[]
                    235: #^newxor[]
1.135     paf       236: #^mail2[]
1.139     paf       237: #^exec[]
1.140     paf       238: #^passpost[]
1.141     paf       239: #^fordelim[]
1.143     paf       240: #^duplicatetable2hashkey[]
1.142     paf       241: #^duplicatehashsqlkey[]
1.145     paf       242: #^longlreplace[]
                    243: #^table2hash_onecolumn[]
1.146     paf       244: #^crossopvars[]
1.148     paf       245: #^three[]
1.149     paf       246: #^badLangAfterCatch[]
1.150     paf       247: #^zeroinstdin[]
1.151     paf       248: #^shifts[]
                    249: #^jspace[]
1.152     paf       250: #^hashselfmodification[]
                    251: #^emptyTransformResult[]
                    252: #^badxdoccreate[]
1.154     paf       253: #^if(-d "CVS"){y}{n}
1.155     paf       254: #^badjunctioncall[]
1.156     paf       255: #^russianindex[]
                    256: #^virtualtest[]
                    257: #^xml[]
                    258: #^mail4[]
1.157     paf       259: #^voidconstructorpass[]
1.160     paf       260: #^$form:CLASS.a=$form:CLASS.a<br>
                    261: #^cookie2[]
                    262: #^menudelim[]
1.158     paf       263: #^touchittest[]
1.162     paf       264: #^touchittest2[]
1.160     paf       265: #^opauto[]
1.161     paf       266: #^trycontextt[]
                    267: #^tfor[]
1.162     paf       268: #^user-foreach-test[]
                    269: #^includet[]
1.163     paf       270: #^derived:includet[]
1.164     paf       271: #^fortestsep[]
1.165     paf       272: #^derived:inclass_process_test[]
                    273: #$derived[^derived::create[]]^derived.inclass_process_test[]
1.166     paf       274: #^domorigint[]
1.167     paf       275: #^junctiontest2[]
1.169     paf       276: #^junctionselftest[]
1.170     paf       277: #^bad-compiletosystem[]
                    278: #^steppedfor[i](1;10;2){$i }
1.171     paf       279: #^file:fullpath[a.gif]<br>
                    280: #^file:fullpath[/abs/a.gif]<br>
                    281: #$form:a/$form:image-map=
                    282: #^foreachform[]
                    283: #^selectSingleoct[]
                    284: #^compilebug[]
                    285: #^badhashcreate[]
1.172     paf       286: #^badsendmail[]
                    287: #^keygenedhash[]<br>
                    288: #<hr>[$env:HTTP_REFERER]
                    289: #$response:Content-TypE[bad]
1.174     paf       290: #^emailhead2[]
1.175     paf       291: #^includet2overridedynamic[]
1.176     paf       292: #^includet2overridestatic[]
1.177     paf       293: #^virtualtest2[]
                    294: #^message-id-test[]
1.178   ! paf       295: ^test_exif[jpg]
1.177     paf       296: 
1.178   ! paf       297: @test_exif[dir]
        !           298: $file[^file:list[$dir;\.(jpe?g|JPE?G)^$]]
        !           299: <table border=1>
1.177     paf       300: ^file.menu{
1.178   ! paf       301: <tr valign=top>
1.177     paf       302:        $image[^image::measure[$dir/$file.name]]
1.178   ! paf       303:        <td>^image.html[$.width(100)$.height(100)]</td>
        !           304:        <td>
        !           305:                $file.name<hr>
        !           306:        $exif[$image.exif]
        !           307:        ^if($exif){
        !           308:                $keys[^exif._keys[]] ^keys.sort{$keys.key}
        !           309:                ^keys.menu{
        !           310:                        $key[$keys.key]
        !           311:                        $value[$exif.$key]
        !           312: 
        !           313:                        ${key}: <b>^show_exif_value[$value]</b><br>
        !           314:                }
        !           315:        }{
        !           316:                no EXIF info<br>
        !           317:        }
        !           318:     </td>
        !           319: </tr>
        !           320: }
        !           321: </table>
        !           322: 
        !           323: @show_exif_value[value][i]
        !           324: ^if($value is hash){
        !           325:        ^for[i](0;$value-1){$value.$i}[,]
        !           326: }{
        !           327:        $value
1.177     paf       328: }
1.178   ! paf       329: 
1.177     paf       330: 
                    331: @message-id-test[]
                    332: ^mail:send[
                    333:        $.from[paf@mail]
                    334:        $.to[paf@mail]
                    335:        $.subject[test]
                    336: #      $.message-id[<1@parser.ru>]
                    337:        $.Message-id[<2@parser.ru>]
                    338:        $.subject[проверка]
                    339:        $.text[мычит!]
                    340: ]
1.176     paf       341: 
                    342: @virtualtest2[]
                    343: $derived[^derived::create[]]
                    344: ^derived.first[]
                    345: 
1.174     paf       346: 
1.175     paf       347: @includet2overridedynamic[]
1.176     paf       348: includet2overridedynamic:<br>
                    349: shold say 'hello in some.p'<br>
                    350: <hr>
1.174     paf       351: $derived[^derived::create[]]
                    352: ^derived.includet2override[]
1.175     paf       353: 
                    354: @includet2overridestatic[]
1.176     paf       355: includet2overridestatic:<br>
                    356: shold say 'hello in derived.p'<br>
                    357: because in static classes there's no way to determine derived class (no virtual mech becase of no virtual table)<br>
                    358: <hr>
1.175     paf       359: ^derived:includet2override[]
1.172     paf       360: 
                    361: @emailhead2[]
                    362: ^mail:send[
                    363:        $.charset[koi8-r]
                    364:        $.from[paf@design.ru]
                    365:        $.to[paf@mail]
1.174     paf       366: #      $.reply-to[^taint[agat] <^taint[ag_7k@mail.ru]>]
                    367: $user[^taint[agat]]
                    368: $email[^taint[ag_7k@mail.ru]]
                    369:        $.reply-to[$user $email]
                    370:        $.subject[test2]
1.172     paf       371: ]
                    372: 
                    373: @keygenedhash[]
                    374: $table[^table::create{key      value
                    375: 1      a
                    376: 2      b
                    377: }]
                    378: $hash[^table.hash($table.key*2)]
                    379: '$hash.4.value' must be 'b'
1.171     paf       380: 
                    381: @badsendmail[]
                    382: ^mail:send[
                    383:        $.from[hren < paf@design.ru
                    384:        >]
                    385:        $.to[paf@design.ru]
                    386:        $.subject[test]
                    387: ]
                    388: 
                    389: @badhashcreate[]
                    390: $hash[
                    391:        $.ok[1]
                    392: ]
                    393: $.bad[1]
                    394: 
                    395: @compilebug[]
                    396: ^a[]^#31=
                    397: 
                    398: @selectSingleoct[]
                    399: $d[^xdoc::create[doc]]
                    400: $element[^d.selectSingle[$nothing]]
                    401: 
                    402: 
                    403: @foreachform[]
                    404: <a href=index.cgihtml?one&a=1&two&b=2&three?1,2>one</a><br>
                    405: <a href=index.cgihtml?one&a=1&two&b=2&three?shit>two</a><br>
                    406: 
                    407: ^form:fields.foreach[key;value]{
                    408:         $key -- $value
                    409: }[<br>]
                    410: <hr>
                    411: $nameless[$form:tables.nameless]
                    412: ^if(def $nameless){
                    413:        nameless table -- ^nameless.menu{$nameless.field}[,]
                    414: }
                    415: ^if(def $form:imap){
                    416:        <hr>
                    417:        IMAP $form:imap.x : $form:imap.y
                    418: }
1.170     paf       419: 
                    420: @steppedfor[name;from;to;step;code]
                    421: $caller.$name($from)
                    422: ^while($caller.$name<=$to){
                    423:        $code
                    424:        ^caller.$name.inc($step)
                    425: }
1.169     paf       426: 
                    427: @bad-compiletosystem[]
                    428: ^process[$string:CLASS]{@a[]
                    429: }
1.168     paf       430: 
                    431: @junctionselftest[]
                    432: $derived[^derived::create[]]^derived.explodejunction{$tomain[tomainOK]}
                    433: ^$tomain=$tomain
1.166     paf       434: 
                    435: @junctiontest2[]
                    436: ^if($if is junction){is junction;not junction}<br>
                    437: ^if(def $if){defined;not defined}<br>
1.165     paf       438: 
                    439: @domorigint[]
                    440: $xdoc[^xdoc::create[вася]]
                    441: ^xdoc.firstChild.setAttribute[name;значение]
                    442: $var[$xdoc.firstChild.nodeName]
                    443: ^throw[paf;$var]
                    444: 
1.163     paf       445: 
                    446: @fortestsep[][i]
                    447: ^for[i](1;3){$i}[,]
1.162     paf       448: 
                    449: @includet[]
                    450: ^include[some.p]
                    451: ^included_method[2]
                    452: 
                    453: @user-foreach-test[][key;value]
                    454: ^user-foreach[key;value]{$key=$value<br>}
                    455: 
                    456: @user-foreach[key;value;code]
                    457: ^for[i](1;10){
                    458:        $caller.$key($i)
                    459:        $caller.$value($i*2)
                    460:        $code
                    461: }
                    462: 
1.161     paf       463: 
                    464: @tfor[][i]
                    465: ^for[i](1;10){
                    466: $i
                    467: }
1.160     paf       468: 
                    469: @trycontextt[]
                    470: ^try{
                    471:        ^trycontexttsub[]
                    472: }{
                    473:        $exception.handled(0)
                    474: }
                    475: 
                    476: 
                    477: @trycontexttsub[]
                    478: ^bad[]
                    479: 
                    480: 
                    481: @opauto[]
                    482: ^reada[]
1.159     paf       483: 
                    484: 
1.157     paf       485: @rusage2[]
1.77      paf       486: <hr>
1.74      paf       487: OK
1.157     paf       488: 
                    489: @rusage2[]
                    490: $s[$status:rusage]
                    491: 
                    492: ^s.tv_sec.format[%.0f].^s.tv_usec.format[%06.0f]
                    493: 
1.150     paf       494: 
1.156     paf       495: @voidconstructorpass[]
                    496: $a[$form:a]
                    497: =^form:a.int(1)=
                    498: =^a.int(1)=
                    499: 
                    500: 
1.155     paf       501: @russianindex[]
                    502: #dir with files with russian-lang names
                    503: $where[dir]
                    504: 
                    505: $dir[^file:list[$where;\.txt^$]]
                    506: ^dir.menu{
                    507:        <a href=$where/^untaint[uri]{$dir.name}>$dir.name</a><br>
                    508: }
                    509: 
1.154     paf       510: @badjunctioncall[]
                    511: ^badjunctioncallinside{code}
                    512: 
                    513: @badjunctioncallinside[code]
1.155     paf       514: xx^code[]
1.152     paf       515: 
                    516: @badxdoccreate[]
                    517: $xdoc[^xdoc::create[вася]]
                    518: #$xdoc[^xdoc::create{<?xml version="1.0" encoding="$request:charset"?><doc>вася</doc>}]
                    519: 
                    520: ^xdoc.firstChild.setAttribute[name;значение]
                    521: ^xdoc.string[]
                    522: 
                    523: 
                    524: @emptyTransformResult[]
                    525: $input[^xdoc::create[docBad]]
                    526: $sheet[^xdoc::create{<?xml version="1.0"?> 
                    527: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
                    528:        <xsl:template match="doc">
                    529:                output
                    530:        </xsl:template>
                    531: </xsl:stylesheet>
                    532: }]
                    533: $output[^input.transform[$sheet]]
                    534: $response:body[^output.file[]]
                    535: 
                    536: @hashselfmodification[]
                    537: $hash[
                    538:        $.a[1]
                    539:        $.b[2]
                    540: ]
                    541: ^hash.foreach[key;value]{
                    542: #      $hash.c[1]
                    543:        $hash.a[1]
                    544: }      
                    545: 
                    546: @touchittest[][i]
1.160     paf       547: $i[before]
                    548: ^touchit[]
                    549: $i
                    550: 
                    551: @touchittest2[]
1.158     paf       552: $i[before]
1.152     paf       553: ^touchit[]
                    554: $i
                    555: 
1.151     paf       556: 
                    557: @jspace[]
                    558: $a(1)
                    559: ^jspace_call{^eval($a*2)}
                    560: #$a(2)
                    561: #$junction
                    562: 
                    563: @jspace_call[param][a]
                    564: $a[unrelcfgdfgated]
                    565: $junction<br>
                    566: $junction.a(2)
                    567: $junction<br>
                    568: 
1.150     paf       569: @shifts[]
                    570: ^eval(1<<3)<br>
                    571: ^eval(8>>2)<br>
1.151     paf       572: #^if(1=1){y;n}<br>
1.150     paf       573: 
1.149     paf       574: 
                    575: @zeroinstdin[]
                    576: #$f[^file::exec[a.pl;$.stdin[$.shit[]]]]
                    577: $f[^file::exec[a.pl;$.stdin[^file::load[binary;1z2.txt]]]]
                    578: =$f.text=
                    579: ^f.save[binary;1z2.out]
1.148     paf       580: 
                    581: @badLangAfterCatch[]
                    582: ^try{
                    583:        $a[ 
                    584:                тут язык сменился на pass_appended
                    585:                ^throw[user;test]
                    586:                и улетело с не тем  языком
                    587:        ]
                    588: }{
                    589:        $exception.handled(1)
                    590: }
                    591: 1  2
1.145     paf       592: 
                    593: @crossopvars[]
                    594: #^one[]<hr>
                    595: ^two[]<hr>
                    596: 
                    597: @table2hash_onecolumn[]
                    598: $t[^table::create{a
                    599: 1
                    600: 1
                    601: }]
                    602: #^t.hash[a]
                    603: #^t.hash[a;b]
                    604: $h[^t.hash[a][$.distinct(1)]]
                    605: $h.1.a
1.143     paf       606: 
                    607: @longlreplace[]
1.144     paf       608: $str1[  мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла ]
1.143     paf       609: $str2[ела]
                    610: $str[Мама $str1 раму]
                    611: 
1.144     paf       612: ^str.replace[^table::create[nameless]{мыла     $str2}]
1.141     paf       613: 
                    614: @duplicatehashsqlkey[]
                    615: ^connect[mysql://mdm:4b833ljq@db-mysql/mdm]{
                    616:        $t[^table::sql{select * from news}]
                    617:        $c[^t.columns[]]
                    618:        ^c.menu{$c.column}[,]
                    619: 
1.142     paf       620:        $h[^hash::sql{select news_type_id, name from news}[$.distinct(1)]]
1.141     paf       621: }
                    622: 
                    623: @duplicatetable2hashkey[]
                    624: $t[^table::create{a    b
                    625: 1      2
                    626: 1      3
                    627: }]
1.142     paf       628: #^t.hash[a]
                    629: #^t.hash[a;b]
                    630: ^t.hash[a][$.distinct[1]]
1.140     paf       631: 
                    632: @menudelim[]
                    633: $t[^table::create{a
                    634: 1
                    635: 2
                    636: 3
                    637: 4
                    638: 5
                    639: }]
                    640: 
                    641: ^t.menu{^if($t.a<3){}{$t.a}}[,]
                    642: 
                    643: @fordelim[]
                    644: ^for[a](0;6){^if($a<3){}{$a}}[,]
                    645: 
1.135     paf       646: 
1.139     paf       647: @passpost[]
                    648: <form method=post name="test" id="test">
                    649: <textarea name="text" cols=20 rows =6>^taint[html][1
                    650: 2
                    651: 
                    652: 3]</textarea><br>
                    653: <input type=submit>
                    654: </form>
                    655: 
                    656: ^if(def $form:text){
                    657:        $a[^file::cgi[a.pl]]
                    658:        $a.text|$a.status|$a.stderr<hr>
                    659: }
                    660: 
                    661: @exec[]
                    662: #$a[^file::exec[a.cmd]]
                    663: $a[^file::cgi[a.cmd]]
                    664: $a.text|$a.status|$a.stderr<hr>
                    665: 
                    666: 
1.137     paf       667: @newxor[]
1.138     paf       668: ^eval(1!|2 #примечание()zzz
                    669: |0x100)<br>
1.137     paf       670: #^eval(1!||2)<br>
                    671: ^if(1!|1){y}{n}
                    672: 
                    673: #@method[$bad]
1.136     paf       674: 
1.135     paf       675: @doubleliterals[]
                    676: #^eval(1e-10)
                    677: ^eval("1e-20")
1.133     paf       678: 
                    679: @xpath3[]
                    680: $constr[^xdoc::create{<?xml version="1.0" encoding="$request:charset" standalone="no"?> <constructor-data><object object_type_id="1" template_id="1" data_process_id="1" is_published="1">проверка</object> <block-list> <block name="date" type="0" label="Дата" is_hide_pub="1" data_type="1"/> <block name="content" type="0" label="Текст" is_hide_pub="1" data_type=""/> </block-list></constructor-data>}]
                    681: $objectData[^constr.selectSingle[/constructor-data/object]]
                    682: $objectData.nodeType<br>
                    683: $objectData.firstChild.nodeValue
                    684: 
                    685: @calltest[]
                    686: ^calltest2[string]
                    687: 
                    688: @calltest2[s]
                    689: $s
1.131     paf       690: 
                    691: @ttransformsep[]
                    692: $input[^xdoc::load[20020909131046.xml]]
                    693: $output[^input.transform[generated.xsl]]
                    694: ^output.string[]
1.127     paf       695: 
                    696: @okswitchtest[]
                    697: $local[local value]
                    698: ^switch[1]{
                    699:        ^case[1]{1code $local}
                    700: }
                    701: 
                    702: @badswitchtest[]
                    703: ^switch[1]{
                    704:        ^badswitchtestcase[]
                    705: }
                    706: @badswitchtestcase[][local]
                    707: $local[local value]
                    708:        ^case[1]{1code $local}
                    709: 
                    710: @badjunction[]
                    711: ^badj1[]
                    712: ^badj2[]
                    713: 
                    714: @html-почта[]
                    715: $переменная[значение]
                    716: ^mail:send[
                    717:        $.from[paf@mail]
                    718:        $.to[paf@mail]
                    719:        $.subject[htmltest1]
                    720:        $.html{тест$переменная=  !}
                    721: ]
                    722: 
1.124     paf       723:                  
                    724: @грязные-cookie[]
1.126     paf       725: $cookie:a[&]
1.125     paf       726: $cookie:a
1.124     paf       727: 
                    728: @новый-split[]
                    729: $abc[a.b.c]
                    730: #$table[^abc.split[.]]
                    731: #$table[^abc.split[.;l]]
                    732: #$table[^abc.split[.;v]]
                    733: $table[^abc.split[.;lv]]
                    734: ^table.menu{$table.piece}[,]
                    735: <hr>
                    736: #$table[^abc.split[.;h]]
                    737: $table[^abc.split[.;hr]]
                    738: $table.0,$table.1,$table.2<br>
1.123     paf       739: 
                    740: @delimiters[]
                    741: $a#1[1]<br>
                    742: $a#1=<br>
                    743: 
1.121     paf       744: 
                    745: @badcolumntest[]
                    746: $table[^table::load[ext.cfg]]
                    747: $table.b
                    748: 
1.120     paf       749: 
                    750: @virtualtest[]
                    751: $derived[^derived::create[derived create actual param]]
                    752: ^derived.test[]
                    753: 
1.119     paf       754: 
                    755: @voidpostest[]
                    756: $s[]
                    757: ^s.pos[$nothing]
1.118     paf       758: 
                    759: @postest[]
                    760: $s[$nothing]
                    761: ^s.pos[$nothing]
1.113     paf       762: 
1.115     paf       763: @cookieexpirestest[]
                    764: #$cookie:exptest[1]
                    765: #$cookie:exptest[$.value[2] $.expires(+1)]
                    766: $response:xxxx[^date::now(+10)]
                    767: $response:yyy[$.value[^date::now(+20)]]
                    768: $response:yyy[$.value[vvv] $.aaaa[^date::now(+20)]]
                    769: 
1.113     paf       770: @rbodytest[]
                    771: $request:body=
                    772: <form method=post>
                    773: <input type=submit name=paf value=123>
                    774: </form>
1.107     paf       775: 
                    776: @staticstest2[]
                    777: ^$derived:derived_var=$derived:derived_var<br>
                    778: ^$derived:a=$derived:a<br>
1.108     paf       779: $derived:a[changed] ^$derived:a=$derived:a<br>
1.107     paf       780: $derived:derived_var[changed] 
                    781: ^$derived:derived_var=$derived:derived_var<br>
                    782: 
1.105     paf       783: @staticstest[]
                    784: $derived[^derived::create[]]
                    785: ^derived.test[]
1.110     paf       786: <hr>
1.106     paf       787: ^$derived.a=$derived.a<br>
                    788: ^$derived.x=$derived.x<br>
1.110     paf       789: <hr>
                    790: ^if($derived is derived){derived is derived}{error: derived is not derived}<br>
                    791: ^if($derived is table){derived is table}{error:derived is not table}<br>
1.111     paf       792: <hr>
                    793: ^^eval(^$derived)=^eval($derived)<br>
                    794: ^^if(^$derived)=^if($derived){y}{n}<br>
1.106     paf       795: 
1.105     paf       796: 
1.104     paf       797: @xdoctypetest[]
                    798: $xdoc[^xdoc::create[x]]
                    799: ^if($xdoc is xdoc){y}{n}
                    800: 
                    801: @xtabletest[]
                    802: $xtableo[^xtable::create[]]
                    803: ^if($xtableo is table){y}{n}
1.105     paf       804: #^xtableo.columns[]
1.100     paf       805: 
1.103     paf       806: @monthdays[month]
                    807: $from[^date::create(2000;$month;1)]
                    808: $to[^date::create($from)] ^to.roll[month](+1)
                    809: $result($to-$from)
                    810: 
1.100     paf       811: @badconstructor[]
                    812: ^date::now[]
1.99      paf       813: 
                    814: @datesaving[]
                    815: $now[^date::now[]]
                    816: $now.daylightsaving<br>
                    817: $now.yearday<br>
                    818: #
                    819: $date[^date::create(2002;1;3)]
                    820: $date.daylightsaving<br>
                    821: $date.yearday
1.97      paf       822: 
1.98      paf       823: @mail4[]
                    824: ^mail:send[
                    825:        $.from[paf@mail.design.ru]
                    826:        $.to[paf@mail.design.ru]
1.156     paf       827:        $.subject[^taint[uri][москва=E0_+ ]=2]
1.98      paf       828:        $.text[^taint[uri][москва]=]
                    829:        $.html{<a href=http://there.ru/?city=^taint[uri][Москва]>link</a>}
                    830: ]
1.97      paf       831: @processtest[]
                    832:     $f[^file::load[text;piece.p]]      ^process{$f.text}
                    833:        $ORIGINS(1)
1.93      paf       834: 
                    835: 
                    836: @badpos[]
                    837: $s[123]
1.94      paf       838: ^s.mid(0;2)
1.92      paf       839: 
                    840: @wwrapperpass[]
                    841: $h[^hash::create[]]
                    842: $h.a(1)
                    843: ^my_method[^if(1){$h}]
                    844: работает. так и должно быть?
                    845: 
                    846: @my_method[p]
                    847: ^p._count[]
                    848: 
1.88      paf       849: 
                    850: @tableclonelimit[]
                    851: $source[^table::create{a
                    852: aa
                    853: bb
                    854: cc}]
                    855: ^source.offset(1)
                    856: #$dest[^table::create[$source]]
                    857: $dest[^table::create[$source;$.offset(2)]]
                    858: $dest[^table::create[$source;$.limit(2)]]
                    859: $dest[^table::create[$source;$.offset(1)$.limit(1)]]
                    860: $dest[^table::create[$source;$.offset(1)$.limit(2)]]
                    861: $dest[^table::create[$source;$.offset[cur]$.limit(2)]]
                    862: 
                    863: ^dest.menu{$dest.a}[,]<br>
                    864: 
                    865: @joinlimit[]
                    866: $source[^table::create{a
                    867: aa
                    868: bb
                    869: cc}]
                    870: ^source.offset(2)
                    871: $dest[^table::create{a
                    872: xx
                    873: }]
                    874: #^dest.join[$source]
                    875: #^dest.join[$source;$.offset(2)]
                    876: #^dest.join[$source;$.limit(2)]
                    877: #^dest.join[$source;$.offset(1)$.limit(1)]
                    878: #^dest.join[$source;$.offset(1)$.limit(2)]
1.91      paf       879: #^dest.join[$source;$.offset[cur]$.limit(1)]
                    880: ^dest.join[$source;$.limit(0)]
1.88      paf       881: 
                    882: ^dest.menu{$dest.a}[,]<br>
1.86      paf       883: 
                    884: @cgit[]
                    885: $f[^file::cgi[showenv.cmd]]
                    886: $f.HELLO=<br>
                    887: $f.CONTENT-TYPE=<br>
                    888: $f.content-type=<br>
                    889: 
1.83      paf       890: 
1.84      paf       891: @mimet[]
1.85      paf       892: $f[^file::stat[a.GIF]]
                    893: $f.content-type
1.84      paf       894: 
                    895: 
1.83      paf       896: @tfind[]
                    897: ^file:find[index.html]
                    898: 
                    899: @tstdin[]
                    900: $f[^file::exec[test.pl;$.stdin[проверка stdin потока]]]
                    901: <pre>$f.text</pre>
1.80      paf       902: 
                    903: @sergestrandef[]
                    904: $sQuantity[ ]
                    905: ^sQuantity.int(10)
1.78      paf       906: 
                    907: @xmltransformbyxdoc[]
                    908: $xdoc[^xdoc::set{^process{<?xml version="1.0" encoding="windows-1251"?>
                    909: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
                    910: <people>
                    911:        <man id="1" имя="word слово">
                    912:                <name>1  2</name>
                    913:        </man>
                    914: </people>
                    915: }}]
                    916: $sheet[^xdoc::create{<?xml version="1.0"?> 
1.79      paf       917: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
                    918: 
                    919: >
1.78      paf       920: <!--<xsl:output doctype-public ="-//W3C//DTD XHTML" indent="yes"/>-->
                    921: 
1.79      paf       922:        <!--<xsl:import href="http://localhost/html.xsl"/>-->
                    923:        <xsl:import href="html.xsl"/>
                    924: 
1.78      paf       925: <xsl:param name="param1">defparam1</xsl:param>
                    926: <xsl:param name="param2">defparam2</xsl:param>
1.79      paf       927: 
1.78      paf       928: 
                    929:        <xsl:template match="doc">
                    930:                param1=<xsl:value-of select="^$param1"/><br/>
                    931:                param2=<xsl:value-of select="^$param2"/><br/>
                    932: 
                    933:                test return <something background=""/>
                    934:        </xsl:template>
                    935: 
                    936:        <xsl:template name="test">
1.81      paf       937:                test return3
1.78      paf       938:        </xsl:template>
                    939: 
                    940:   <xsl:template match="people">
                    941:      <html>
1.155     paf       942:      <head>
                    943: <link type='text/xml' rel='alternate' href='/Default.vsdisco'/>
                    944: z</head>
1.78      paf       945:                para1=<xsl:copy-of select="^$param1"/>
                    946:        <xsl:apply-templates/>
                    947:        <hr/>
                    948:        <xsl:call-template name="test"/>
                    949:      </html>   
                    950:   </xsl:template>
                    951: 
                    952:   <xsl:template match="name">
                    953:     <b><xsl:value-of select="."/></b>
                    954:   </xsl:template>
                    955: </xsl:stylesheet>
                    956: }]
                    957: 
                    958: 
                    959: $xdoc[^xdoc.transform[$sheet]]
                    960: $string[^xdoc.string[$.method[html]]]
                    961: ^string.save[a]
                    962: ^untaint[html]{$string}
                    963: 
                    964: 
1.77      paf       965: 
                    966: @tnormalize[]
                    967: #s состоит из 1000 фрагментов
                    968: $s[^for[i](0;999){фрагмент }]
                    969: #это займет много ресурсов
                    970: ^s.match[фраг][g]{перга}
                    971: #это займет меньше ресурсов
                    972: #$normalized[^s.normalize[]]
                    973: #^normalized.match[фраг][g]{перга}
1.74      paf       974: 
                    975: @sendtests[]
1.89      paf       976: ^text[]
1.74      paf       977: #^html[]
                    978: #^text-n-html[]
                    979: #^file[]
                    980: #^text-n-file[]
1.89      paf       981: #^text-n-html-n-file[]
1.74      paf       982: #^backwardcomp[]
                    983: 
                    984: @backwardcomp[]
                    985: ^mail:send[
                    986:        $.from[paf]
                    987:        $.to[paf]
                    988:        $.body[this is text value]
                    989: ]
                    990: 
                    991: @text[]
                    992: ^mail:send[
                    993:        $.from[paf]
1.90      paf       994:        $.to[paf]
1.74      paf       995:        $.text[
                    996:                $.value[this is text value]
                    997:        ]
                    998: ]
                    999: 
                   1000: @html[]
                   1001: ^mail:send[
                   1002:        $.from[paf]
                   1003:        $.to[paf]
                   1004:        $.html{this is <b>html</b> value ^taint[<] 10}
                   1005: ]
                   1006: 
                   1007: @text-n-html[]
                   1008: ^mail:send[
                   1009:        $.from[paf]
                   1010:        $.to[paf]
                   1011:        $.text[
                   1012:                $.value[this is text value]
                   1013:        ]
                   1014:        $.html[
                   1015:        $.value{this is <b>html</b> value ^taint[<] 10}
                   1016:        ]
                   1017: ]
                   1018: 
                   1019: @file[]
                   1020: ^mail:send[
                   1021:        $.from[paf]
                   1022:        $.to[paf]
                   1023:        $.file[^file::load[binary;image.jpg]]
                   1024: ]
                   1025: 
                   1026: @text-n-file[]
                   1027: ^mail:send[
                   1028:        $.from[paf]
                   1029:        $.to[paf]
                   1030:        $.text[
                   1031:                $.value[this is text value]
                   1032:        ]
                   1033:        $.file[^file::load[binary;image.jpg]]
                   1034: ]
                   1035: 
                   1036: @text-n-html-n-file[]
                   1037: ^mail:send[
                   1038:        $.from[paf]
                   1039:        $.to[paf]
                   1040:        $.text[
                   1041:                $.value[this is text value]
                   1042:        ]
                   1043:        $.html[
                   1044:        $.COntent-type[$.value[text/html]$.charset[windows-1251xx]]
                   1045:        $.value{this is <b>html</b> value ^taint[<] 10}
                   1046:        ]
                   1047:        $.file[^file::load[binary;image.jpg]]
                   1048: ]
                   1049: 
                   1050: 
                   1051: 
                   1052: @md5salt[]
                   1053: 1234
                   1054: 
                   1055: @cryptdocsample[]
                   1056: $users[^table::create{name     password
                   1057: alice  ***
                   1058: bob    ***
                   1059: }]
                   1060: 
                   1061: $htpasswd[^table::create[nameless]{}]
                   1062: ^users.menu{
                   1063:        ^htpasswd.append{$users.name:^math:crypt[$users.password;^$apr1^$^md5salt[]]}
                   1064: }
                   1065: 
                   1066: ^htpasswd.save[nameless;.htpasswd-parser-test]
                   1067: 
1.73      paf      1068: 
                   1069: @tcrypt[]
1.76      paf      1070: #^math:crypt[123;^$apr1^$1234567890abcdef]<br>
                   1071: ^math:crypt[123;^$apr1^$]<br>
1.72      paf      1072: 
                   1073: @tfilespec[]
                   1074: src=$selffilespec<br>
                   1075: dirname=^file:dirname[$selffilespec]<br>
                   1076: basename=^file:basename[$selffilespec]<br>
                   1077: justname=^file:justname[$selffilespec]<br>
                   1078: justext=^file:justext[$selffilespec]<br>
1.68      paf      1079: 
                   1080: @datecreatestring3[]
                   1081: $new_after[^date::now(-3)]
                   1082: $articles[^table::create{id    title   last_update
                   1083: 1      привет  2002-07-03}]
                   1084: ^articles.menu{
                   1085:     $last_update[^date::create[$articles.last_update]]
                   1086:     <a href=${articles.id}.html>$articles.title</a>
                   1087:     ^if($last_update > $new_after){новая}
                   1088:     <br>
                   1089: }
1.67      paf      1090: 
                   1091: @div[]
                   1092: $var(5)
                   1093: ^var.inc(7)
                   1094: ^var.dec(3)
                   1095: ^var.div(4)
                   1096: ^var.mul(2)
                   1097: $var
                   1098: 
                   1099: 
                   1100: @xdocsave[]
                   1101: $document[^xdoc::create{<?xml version="1.0" encoding="windows-1251" ?>
                   1102: <document>
                   1103: строка1<br/>
                   1104: строка2<br/>
                   1105: </document>}]
                   1106: ^document.save[test.xml]
                   1107: 
                   1108: @xdocstring[]
                   1109: $document[^xdoc::create{<?xml version="1.0" encoding="windows-1251" ?>
                   1110: <document>
                   1111: строка1<br/>
                   1112: строка2<br/>
                   1113: </document>}]
                   1114: ^document.string[
                   1115:     $.method[html]
                   1116: ]
                   1117: 
                   1118: 
                   1119: @xdocload[]
                   1120: $document[^xdoc::load[article.xml]]
                   1121: $response:body[^document.file[$.media-type[text/xml]]]
                   1122: 
                   1123: 
                   1124: @xdoccreatetag[]
                   1125: $document[^xdoc::create[document]]
                   1126: $paraNode[^document.createElement[para]]
                   1127: $dummy[^document.documentElement.appendChild[$paraNode]]
                   1128: $response:body[^document.file[$.media-type[text/xml]]]
                   1129: 
                   1130: 
                   1131: @xdoccreate[]
                   1132: $document[^xdoc::create{<?xml version="1.0" encoding="windows-1251" ?>
                   1133: <document>
                   1134: текст
                   1135: </document>}]
                   1136: $response:body[^document.file[$.media-type[text/xml]]]
                   1137: 
                   1138: @selectBool2[]
                   1139: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
                   1140: <t attr="привет" n="123"/>}]
                   1141: ^if(^d.selectBool[/t/@n > 10]){
                   1142:     /t/@n больше 10
                   1143: }{
                   1144:     не больше
                   1145: }
                   1146: 
                   1147: 
                   1148: @selectNumber2[]
                   1149: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
                   1150: <t attr="привет" n="123"/>}]
                   1151: ^d.selectNumber[number(/t/@n)+1]<br>
                   1152: ^d.selectNumber[2*2]<br>
                   1153: 
                   1154: 
                   1155: @selectString2[]
                   1156: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
                   1157: <t attr="привет" n="123"/>}]
                   1158: # результат=привет
                   1159: ^d.selectString[string(t/@attr)]
                   1160: 
                   1161: 
                   1162: @selectSingle2[]
                   1163: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
                   1164: <t attr="привет" n="123"/>}]
                   1165: # результат=один элемент "t"
                   1166: $element[^d.selectSingle[t]]
                   1167: # результат=2 (количество атрибутов <t>)
                   1168: Количество атрибутов: ^element.attributes._count[]<br>
                   1169: # результат=не существует (нет <x>)
                   1170: ^if(^d.select[x]){
                   1171:     x существует
                   1172: }{
                   1173:     x не существует
                   1174: }
                   1175: 
                   1176: @select2[]
                   1177: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><t attr="привет" n="123"/>}]
                   1178: # результат: список из одного элемента "t"
                   1179: $list[^d.select[t]]
                   1180: # результат: 2 = количество атрибутов <t>
                   1181: ^list.0.attributes._count[]<br>
                   1182: ^for[i](0;$list-1){
                   1183:     $attr[$list.$i]
                   1184:     $attr.nodeName = $attr.nodeType<br>
                   1185: }
                   1186: 
                   1187: 
                   1188: @selectt[]
                   1189: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><t attr="привет" n="123"/>}]
                   1190: $list[^d.select[t]]
                   1191: ^list.0.attributes._count[]
1.65      paf      1192: 
                   1193: @envt[]
1.66      paf      1194: $f[^file::exec[showenv.cmd;
                   1195:        $.bad[value]
                   1196:        $.CGI_good[value]
                   1197: ]]
1.65      paf      1198: $f.status<br>
                   1199: $f.stderr<br>
                   1200: <pre>$f.text</pre>
                   1201: 
1.63      paf      1202: 
                   1203: @tserge[]
1.64      paf      1204: ^if(" 09 "){y}
1.61      paf      1205: 
                   1206: @datetest[]
                   1207:        $f[^file::stat[some.zip]]
                   1208: Размер в байтах: $f.size<br>
                   1209: Год создания: $f.cdate.year<br>
                   1210: $now[^date::now[]]
                   1211: $DAYS_CONSIDERED_NEW(3)
                   1212: Статус: ^if($f.mdate >= $now-$DAYS_CONSIDERED_NEW){новый;старый}
                   1213: 
1.60      paf      1214: 
                   1215: @checkList[]
                   1216: ...^oneOf[a;a,b,c]...<br>
                   1217: #...^oneOf[a;ax,b,c]...<br>
                   1218: ...^oneWord[word]...<br>
                   1219: #...^oneWord[wo rd]...<br>
                   1220: 
                   1221: 
                   1222: @oneOf[s;list][t] выдаёт строку, если строка она есть в списке(разделенном запятыми)
                   1223: $t[^list.lsplit[,]]
                   1224: ^if(!^t.locate[piece;$s]){^throw[user;$s;unknown]}
                   1225: $result[$s]
                   1226: 
                   1227: @oneWord[s]
                   1228: ^if(^s.match[\W]){^throw[user.data;$s;not word]}{$s}
1.59      paf      1229: 
                   1230: @pngsize[]
                   1231: $i[^image::measure[test.png]]
                   1232: ^i.html[]
                   1233: 
                   1234: 
                   1235: @forkeys[]
                   1236: $text[^form:fields.foreach[key;val]{$key=$val
                   1237: }]
                   1238: ^text.save[ttt.txt]
                   1239: =$text=
                   1240: 
                   1241: 
                   1242: @tstoredproc2[]
                   1243: ^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{
                   1244:        ^void:sql{exec pafvoid}
                   1245: }
                   1246: 
                   1247: @tstoredproc[]
                   1248: ^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{
                   1249:        $t[^table::sql{exec pafproc}]
                   1250: #      $t[^table::sql{{call pafproc}}]
                   1251:        $c[^t.columns[]]
                   1252:        ^c.menu{$c.column}[<br>]
                   1253: }
1.57      paf      1254: 
                   1255: @datecreatestring2[]
1.58      paf      1256: <table border=1>
                   1257: ^datecreatestring2show[2000]
                   1258: ^datecreatestring2show[2000-02]
1.59      paf      1259: ^datecreatestring2show[2000-2-03]
1.58      paf      1260: ^datecreatestring2show[2000-02-03 15]
                   1261: ^datecreatestring2show[2000-02-03 15:30] 
                   1262: ^datecreatestring2show[2000-02-03 15:30:04] 
                   1263: ^datecreatestring2show[2000-02-03 15:30:04 hren] 
                   1264: ^datecreatestring2show[15:30] 
                   1265: ^datecreatestring2show[15:30:05] 
                   1266: ^datecreatestring2show[15:30:05 hren] 
                   1267: </table>
                   1268: 
                   1269: @datecreatestring2show[s]
                   1270: $date[^date::create[$s]]
                   1271: <tr>
                   1272: <td>$s</td><td align=right>^date.sql-string[]</td>
                   1273: </tr>
                   1274: 
1.57      paf      1275: 
                   1276: @junctionprob[][l]
                   1277: $l[123]
                   1278: $a{$l}
                   1279: ^junctionprobnested[$a]
                   1280: @junctionprobnested[p]
                   1281: $p
                   1282: 
                   1283: 
                   1284: @callindirecttarget[]
                   1285: callindirecttarget called
                   1286: @callindirect[]
                   1287: $f[$callindirecttarget]
                   1288: ^f[]
                   1289: 
                   1290: @xpath2[]
                   1291: $xdoc[^xdoc::create{<?xml version="1.0" encoding="windows-1251"?>
                   1292: <doc>
                   1293: <field-list>
                   1294: <field name="aa"/>
                   1295: <field name="bb"/>
                   1296: </field-list>
                   1297: </doc>
                   1298: }]
                   1299: 
                   1300: #^xdoc.string[]
                   1301: 
                   1302: $fieldList[^xdoc.selectSingle[/doc/field-list]]
                   1303: #^fieldList.childNodes._count[]
                   1304: $fields[^fieldList.select[field]]
                   1305: #^fields._count[]
                   1306: ^fields.foreach[k;node]{
                   1307:        $node.nodeName<br>
                   1308: }
                   1309: @counter[filespec][f;s]
                   1310: ^file:lock[$filespec]{
                   1311:        $f[^file::load[text;$filespec]]
                   1312:        $s[^eval($f.text+1)]
                   1313:        ^s.save[$filespec]      
                   1314: }
                   1315: $s
1.56      paf      1316: 
                   1317: @xmlspace[]
                   1318: $xdoc[^xdoc::set{^process{<?xml version="1.0" encoding="windows-1251"?>
                   1319: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
                   1320: <people>
                   1321:        <man id="1" имя="word слово">
                   1322:                <name>1  2</name>
                   1323:        </man>
                   1324: </people>
                   1325: }}]
                   1326: $xdoc[^xdoc.transform[global.xsl]]
                   1327: $string[^xdoc.string[$.method[html]]]
                   1328: ^string.save[a]
                   1329: ^untaint[html]{$string}
                   1330: 
                   1331: @badthrows[]
                   1332: #^throw[a;b;]
                   1333: ^throw[a;]
1.54      paf      1334: 
                   1335: @mssqltypes1[]
                   1336: ^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{
1.55      paf      1337: #    ^string:sql{select { ts '1998-05-02 01:23:56.123' }}
                   1338: #    ^string:sql{select CAST({ ts '1998-05-02 01:23:56.123' }AS smalldatetime)}
                   1339: #      ^string:sql{select CAST({ts '2002-04-28 00:00:00.000'} AS smalldatetime)}
                   1340:        $t[^table::sql{select a from paf}]
                   1341:        ^t.count[]
1.54      paf      1342: }
1.51      paf      1343: 
1.53      paf      1344: @datecreatestring[]
1.54      paf      1345: $d[^date::create[2002-04-33 01:03:04]]
1.53      paf      1346: ^d.sql-string[]
1.52      paf      1347: 
                   1348: @method[hash]
                   1349: $hash.key
                   1350: @mainZ[]
                   1351: ^method[
                   1352:     $.key{code}
                   1353: ]
                   1354: 
1.51      paf      1355: @tablehasht[]
                   1356: $t[^table::create{p
                   1357: 1
                   1358: 3
                   1359: 2
                   1360: 4}]
                   1361: 
                   1362: $h[^t.hash[p]]
                   1363: 
                   1364: =^h._count[]=
                   1365: 
                   1366: 
                   1367: @sqldefaults[]
                   1368: ^connect[mysql://mdm:4b833ljq@db-mysql/mdm]{
                   1369:        ^int:sql{select news_id from news where news_id=-1}[$.default{2}]<br>
                   1370:     ^string:sql{select news_id from news where news_id=-1}[$.default{2}]
                   1371: }
1.60      paf      1372: =======
                   1373: <hr>
                   1374: OK
                   1375: >>>>>>> 1.50
1.48      paf      1376: 
                   1377: @tcrashlocaljunctionsv2[]
                   1378: $a[
                   1379:        $b{  $c[1] }
                   1380: ]
                   1381: $b
                   1382: $c
                   1383: 
                   1384: @tcrashlocaljunctions[]
                   1385: $var[aaa]
                   1386: ^if(1){
                   1387: ^tcrashlocaljunctions1[]
                   1388: }
                   1389: 
                   1390: $j
                   1391: 
1.49      paf      1392: @tcrashlocaljunctions1[][var]
                   1393: $var[varvalue]
1.48      paf      1394:        $j{
                   1395:                $var
                   1396:        }
1.49      paf      1397: $j
1.48      paf      1398: 
                   1399: @tjunctions[][tl]
                   1400: $t[^t::create[]]
                   1401: ^tjunctionsi[]
                   1402: 
                   1403: @tjunctionsi[][tl]
                   1404: $tl[12345]
                   1405: ^t.tjunctionsm[
                   1406:        $.key{
                   1407:                $tl
                   1408:        }
                   1409: ]
1.46      paf      1410: 
1.47      paf      1411: @replacetest[]
                   1412: $b[b]
                   1413: $s[
                   1414: aaaaaaaaaa${b}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1415: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa${b}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1416: ]
                   1417: ^s.replace[^table::create{from to
                   1418: ba     !_}]
                   1419: 
                   1420: 
1.46      paf      1421: @matchoptionpp[]
1.47      paf      1422: #$ORIGINS(1)
1.46      paf      1423: $s[
                   1424: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1.47      paf      1425: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1426: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1427: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1428: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1429: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1430: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1431: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1432: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                   1433: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1.46      paf      1434: ]
                   1435: ^s.match[b;g']{($match.prematch|$match.match|$match.postmatch)}
                   1436: 
1.44      paf      1437: 
                   1438: @txdocxnodechild[]
                   1439: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?><d/>}]
                   1440: $xdoc.nodeName
                   1441: ^xdoc.selectNumber[2*2]
1.45      paf      1442: $xdoc:ELEMENT_NODE
1.44      paf      1443: 
                   1444: 
                   1445: @tclasses[]
                   1446: $t[^t::create[]]
                   1447: ^t.method[]
                   1448: <hr>
                   1449: ^t.base_method[]
                   1450: 
1.40      paf      1451: 
                   1452: @errort[]
1.42      paf      1453: ^xdoc::create[a]
1.40      paf      1454: #^throw[user;here;this]
                   1455: 
                   1456: @tselectNumber[]
                   1457: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d attr="привет" n="123"/>}]
                   1458: ^d.selectString[string(d/@attr)]<br>
                   1459: ^d.selectNumber[2*2]<br>
                   1460: ^d.selectNumber[number(/d/@n)+1]<br>
                   1461: 
1.34      paf      1462: 
1.36      paf      1463: @invaliddate2[]
                   1464: $d[^date::create(1018946575/60/60)] ^d.sql-string[]
                   1465: 
                   1466: @process2[]
                   1467: ^^process{
                   1468:        ^process{
                   1469:                ^$a[^^if(0){^$.k[y]}{^$.k[^^hren[]n]}] ^$a.k
                   1470:        }
                   1471: }
                   1472: 
1.35      paf      1473: @casehashtext[]
                   1474: $tt[1]
                   1475: $tmp[
                   1476:         ^switch[$tt]{
                   1477:                 ^case[1]{
                   1478:                         $.aaa[123]
                   1479:                 }
                   1480:                 ^case[DEFAULT]{
                   1481:                         $.bbb[456]
                   1482:                 }
                   1483:         }
1.36      paf      1484:         shit!
1.35      paf      1485: ]
1.36      paf      1486: #$tmp
1.35      paf      1487: $tmp.aaa
                   1488: 
                   1489: @subjvaltest[]
                   1490: $a12[val]
                   1491: $b[12]
                   1492: $a$b
                   1493: 
1.34      paf      1494: @tableselect0[]
                   1495: $person[^table::create{name    height
                   1496: paf    1.77
                   1497: шохин  2.07
                   1498: moko   1.77
                   1499: }]
                   1500: $nottoohigh[^person.select($person.height<2)]
                   1501: ^nottoohigh.menu{$nottoohigh.name<br>}
1.32      paf      1502: 
                   1503: @transparams[]
                   1504: $idoc[^xdoc::create{<?xml version="1.0" ?><doc/>}]
                   1505: $odoc[^idoc.transform[global.xsl;
                   1506:        $.param1['1']
                   1507:        $.param2['2']
                   1508: ]]
                   1509: <pre>^taint[^odoc.string[$.method[html]]]
                   1510: 
                   1511: @memnotest1[]
                   1512: ^for[i](0;4000){
                   1513: 
                   1514:  $xxxx[$i]
                   1515:  $xxxx
                   1516: 
                   1517: }
                   1518: 
                   1519: @memnotest1notes[]
                   1520: одна итерация цикла:
                   1521: [Mon Apr  8 20:12:02 2002] execution-------------------------|
1.35      paf      1522: '469641+=28 wcodeframe -> 0 !optimize[3]''469669+=49 string от {} -> 0 optimize[3]'
1.32      paf      1523: [Mon Apr  8 20:12:02 2002] 12:STRING__WRITE
                   1524: [Mon Apr  8 20:12:02 2002]  "|| "
                   1525: [Mon Apr  8 20:12:02 2002] 12:WITH_ROOT
                   1526: [Mon Apr  8 20:12:02 2002] 13:VALUE
                   1527: [Mon Apr  8 20:12:02 2002]  "xxxx" string
1.35      paf      1528: [Mon Apr  8 20:12:02 2002] 14:CREATE_EWPOOL'469377+=24 wcodeframe -> 0 !optimize[1]''469401+=49 string -> 41 !optimize[7]'
1.32      paf      1529: [Mon Apr  8 20:12:02 2002] 16:WITH_READ
                   1530: [Mon Apr  8 20:12:02 2002] 17:VALUE
                   1531: [Mon Apr  8 20:12:02 2002]  "i" string
                   1532: [Mon Apr  8 20:12:02 2002] 18:GET_ELEMENT
1.35      paf      1533: [Mon Apr  8 20:12:02 2002] 17:WRITE_VALUE'469452+=40 MAX_NUMBER -> !~2 actual digits''469492+=49 -> 41 !'
                   1534: [Mon Apr  8 20:12:02 2002] 16:REDUCE_EWPOOL'469541+=24 VString -> 0 optimize[5]'
1.32      paf      1535: [Mon Apr  8 20:12:02 2002] 15:CONSTRUCT_VALUE
                   1536: [Mon Apr  8 20:12:02 2002] 12:STRING__WRITE
                   1537: [Mon Apr  8 20:12:02 2002]  "| "
                   1538: [Mon Apr  8 20:12:02 2002] 12:WITH_READ
                   1539: [Mon Apr  8 20:12:02 2002] 13:VALUE
                   1540: [Mon Apr  8 20:12:02 2002]  "xxxx" string
                   1541: [Mon Apr  8 20:12:02 2002] 14:GET_ELEMENT
                   1542: [Mon Apr  8 20:12:02 2002] 13:WRITE_VALUE'469573+=41 string expand nothing for now'
                   1543: [Mon Apr  8 20:12:02 2002] 12:STRING__WRITE
1.35      paf      1544: [Mon Apr  8 20:12:02 2002]  "||"'469617+=24 VString -> 0 !optimize[6]'
1.32      paf      1545: [Mon Apr  8 20:12:02 2002] <-ja returned
                   1546: [Mon Apr  8 20:12:02 2002] ja->
                   1547: 
                   1548: 201/328=0.612804878049 %%optimized
                   1549: 
                   1550: 1.
                   1551: CREATE_*POOL
                   1552:     сделать
                   1553: *POOL_POOLED+CODE
                   1554:     где
                   1555:         wwrapper
                   1556:         и(возможно) wcodeframe
                   1557:         +string
                   1558:         стековая переменная
                   1559: 
                   1560: 2.
                   1561: избавиться от обёртки при возврате результата process [см. тело _for]
                   1562: 
                   1563: 3.
                   1564: сделать callback для process, чтобы вынести invariants из _for & co.
                   1565: 
                   1566: 4.
                   1567:  @todo склеить get_element и write_value (при вставлении? write_value)
                   1568: 
                   1569: 5.
                   1570: reduce_*pool -> вариант получить именно string, без VString обёртки [часто
                   1571: обёртка сразу выбрасывается = не нужна]
                   1572: 
                   1573: 6.
                   1574: process вариант получить именно string, без VString обёртки [часто обёртка
                   1575: сразу выбрасывается = не нужна]
                   1576: 
                   1577: 7.
                   1578: string head, убить 8 байт неправильной link
1.31      paf      1579: 
                   1580: @voidparams[]
                   1581: ^voidparamsm[$form:field]
                   1582: 
                   1583: @voidparamsm[p]
                   1584: ^p.int(123)
1.29      paf      1585: 
1.30      paf      1586: @rolls2[]
                   1587: $now[^date::now[]]
                   1588: $d[^date::create($now.year;$now.month)] ^d.sql-string[]<br>
                   1589: ^for[i](1;12){
                   1590:        ^d.roll[month](-1) ^d.sql-string[]<br>
                   1591: }
                   1592: 
1.29      paf      1593: @cacheexpireschanging[]
                   1594: ^cache[$DB_HOME/keyключ][^date::now(+1)]{ ^rem{1 day}
                   1595:     ^cache[^date::now(+4/24/60/60)]
                   1596: #    ^cache(2)
1.30      paf      1597: #    ^cache(0)
1.29      paf      1598:        ^math:random(100)
                   1599: }
                   1600: 
                   1601: 
                   1602: 
                   1603: @cacheexpiresfixed[]
                   1604: ^cache[$DB_HOME/keyключ][^date::now(+2/24/60/60)]{
                   1605:        ^math:random(100)
                   1606: }
                   1607: 
                   1608: @dateoffsets[]
                   1609: $d[^date::create(^date::now[]+1/24/60)]
                   1610: #$d[^date::now(+1/24/60)]
                   1611: ^d.sql-string[]
                   1612: #$d
1.26      paf      1613: 
1.28      paf      1614: @exceptionTypes[]
                   1615: #    parser.compile       ^test[}                компиляция (непарная скобка, ...)
                   1616: #    parser.runtime       ^if(0).                параметры (больше/меньше, чем нужно, не тех типов, ...)
                   1617: #    number.zerodivision  ^eval(1/0) ^eval(1%0)
                   1618: #    number.format        ^eval(abc*5)
                   1619: #    file.missing         ^file:delete[delme]                       not found
                   1620: #    file.access          ^table::load[.]                       no rights
                   1621: #    image.format         ^image::measure[index.html]                        not gif/jpg
                   1622: #    sql.connect          ^connect[mysql://baduser:pass@host/db]{}                       not found/timeout
                   1623: #    sql.execute          ^connect[mysql://okuser:pass@host/db]{^void:sql{select bad}}                       syntax error
                   1624: #    xml                  ^xdoc::create{<forgot?>}                       any error in xml/xslt libs
                   1625: #    smtp.connect                                not found/timeout
                   1626: #    smtp.execute                                communication error
                   1627: 
1.26      paf      1628: @roll2[]
                   1629: $d[^date::create(2002;4;2;2;2;3)] ^d.sql-string[]<br>
1.27      paf      1630: ^d.roll[day](+365*3+1) ^d.sql-string[]<br>
1.26      paf      1631: 
1.25      paf      1632: 
                   1633: @rolls[]
                   1634: $d[^date::create(2002;4;4)]
                   1635: ^d.sql-string[]<br>
                   1636: ^for[i](1;7){
                   1637: ^d.roll[day](-1)
                   1638: ^d.sql-string[]<br>
                   1639: }
                   1640: <hr>
                   1641: $d[^date::create(2002;3;28)]
                   1642: ^d.sql-string[]<br>
                   1643: ^for[i](1;7){
                   1644: ^d.roll[day](+1)
                   1645: ^d.sql-string[]<br>
                   1646: }
                   1647: <hr>
                   1648: $d[^date::create(2002;12;3)]
                   1649: ^d.sql-string[]<br>
                   1650: ^for[i](1;14){
                   1651: ^d.roll[day](-1)
                   1652: ^d.sql-string[]<br>
                   1653: }
                   1654: <hr>
                   1655: $d[^date::create(2002;10;19)]
                   1656: ^d.sql-string[]<br>
                   1657: ^for[i](1;14){
                   1658: ^d.roll[day](+1)
                   1659: ^d.sql-string[]<br>
                   1660: }
                   1661: 
                   1662: 
                   1663: 
                   1664: 
                   1665: 
1.22      paf      1666: 
                   1667: @exceptions1[]
                   1668: ^try{
                   1669:        aaa
1.24      paf      1670:        ^throw[custom1;paf;is stupid]
1.22      paf      1671: }{
1.24      paf      1672:        ^if($exception.type eq custom1){
1.28      paf      1673: #              $exception.handled(1)
                   1674:        ^throw[$exception]
1.24      paf      1675:                type=$exception.type<br>
                   1676:            source=$exception.source<br>
                   1677:            file=$exception.file<br>
                   1678:            lineno=$exception.lineno<br>
                   1679:        comment=$exception.comment<br>
                   1680:        }
1.22      paf      1681: }
1.21      paf      1682: 
                   1683: @locate_by_expr[]
                   1684: $t[^table::create{a    b
                   1685: 1      nok
                   1686: 2      ok
                   1687: 3      nok
                   1688: }]
                   1689: ^if(^t.locate($t.a==2)){$t.b}{n}
1.17      paf      1690: 
                   1691: @method_junction_params[param]
                   1692: ^if($param is junction){junction}{ne junction}
                   1693: 
                   1694: @verifyCookie[value] 
                   1695: ^if($cookie:dummyvote eq $value){ 
                   1696:        $result(1) 
                   1697: }{ 
                   1698:        $cookie:dummyvote[$value] 
                   1699:        $result(0) 
                   1700: }
1.16      paf      1701: 
                   1702: @execlangs[]
1.20      paf      1703: $f[^file::exec[test.pl]]
1.36      paf      1704: err:$f.stderr<br>
1.16      paf      1705: ^process{$f.text}
                   1706: #$c[^t.columns[]]
                   1707: #^c.menu{
                   1708: #* $c.column<br>
                   1709: #}
1.36      paf      1710: c:$t.c<br>
1.16      paf      1711: 
                   1712: @tobjeresult[]
                   1713: ^table::create{a
                   1714: 12}
1.15      paf      1715: 
                   1716: @xmlprobs[]
                   1717: $xmlDataType[^xdoc::load[program.xml]]
                   1718: #<pre>^taint[^xmlDataType.string[]]
                   1719: $xmlDataTypes[^xmlDataType.select[programs/program[@id=4]/data]]
                   1720: #=^xmlDataTypes._count[]=
                   1721: =^xmlDataTypes.0.getAttribute[type-id]=
                   1722: 
                   1723: @doubleprobs[]
                   1724: $1(^math:radians(180))
                   1725: $2($math:PI)
                   1726: ^if(^1.format[%.10f]==^2.format[%.10f]){y;n}
                   1727: ^if($1==$2){y;n}
                   1728: ^if(^math:radians(180)==$math:PI){y;n}
                   1729: 
                   1730: 
                   1731: @divnamestop[]
                   1732: $a(10)
                   1733: ^eval($a\3)
                   1734: 
                   1735: @arrayclone[]
                   1736: $t[^table::create{a    b
                   1737: 1      11
                   1738: 2      22
                   1739: }]
                   1740: $c[^table::create[$t]]
                   1741: ^c.append{2    33}
                   1742: ^t.count[]
                   1743: ^c.count[]
                   1744: 
                   1745: @operator_tricks[]
                   1746: ^if(1){$a[^t[]]}
                   1747: $a!
                   1748: $a($b)
                   1749: ^if(1){y}{n}
                   1750: $MAIN:a(^t[] eq OK)
                   1751: #$MAIN:a(1)
                   1752: ^if($a){y}{n}
                   1753: #^if(1){y}{n}
                   1754: $form:if
                   1755: $a[$.n[1]]
                   1756: $a.if
                   1757: 
                   1758: @xoutputrusattr[]
                   1759: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d attr="привет"/>}]
                   1760: ^show_xdoc2[$d]
                   1761: 
                   1762: @xdocset1[]
                   1763: $d[^xdoc::set{<?xml version="1.0"?><d>=^taint[&]=</d>}]
                   1764: ^show_xdoc2[$d]
                   1765: 
                   1766: @regexp3[]
                   1767: $s[abcАБВ]
                   1768: ^if(^s.match[][i]){y}{n}
                   1769: 
                   1770: 
                   1771: @exec2[]
                   1772: $a[^file::exec[bin/t.cmd]]
                   1773: <pre>^taint[$a.text]</pre>|$a.status|$a.stderr<hr>
                   1774: 
                   1775: 
                   1776: @tlock[]
                   1777: ^file:lock[lockfile]{
                   1778:        code
                   1779: }
                   1780: 
                   1781: @xmloutattrwithoutvalue[]
                   1782: #$ORIGINS(1)
                   1783: $doc[^xdoc::set{<?xml version="1.0"?><doc background="">zz</doc>}]
                   1784: $doc[^doc.transform[global.xsl]]
                   1785: =^taint[html][^doc.string[$.method[html]]]=
                   1786: 
                   1787: 
                   1788: 
                   1789: @precisionProblem[]
                   1790: $a[123456789012345678901234567890]
                   1791: $b(^a.double[])
                   1792: ^b.format{%.20E}
                   1793: <hr>
                   1794: ^eval(2*2)
                   1795: 
                   1796: @xpath[]
                   1797: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
                   1798: <document><block><p>привет</p></block></document>
                   1799: }]
                   1800: #^show_xdoc2[$xdoc]
                   1801: $node[^xdoc.selectSingle[/document/block/p]]
                   1802: ^if(def $node){
                   1803:        ^if($node is string){
                   1804:                $node
                   1805:        }{
                   1806:        ^if($node is hash){
                   1807:                ^node._count[]
                   1808:        }{
                   1809:                $node.nodeType
                   1810:        }
                   1811:        }
                   1812: #$node.firstChild.nodeValue
                   1813: }{
                   1814:        node not found
                   1815: }
                   1816: 
                   1817: 
                   1818: @ttablesetlang[]
                   1819: $a-tab-b[a     b
                   1820: 1      2]
                   1821: 
                   1822: $t[^table::set{$a-tab-b}]
                   1823: =$t.a=
                   1824: <hr>
                   1825: 
                   1826: $t[^table::set[nameless]{^taint[$a-tab-b]}]
                   1827: =$t.0=
                   1828: <hr>
                   1829: 
                   1830: $t[^table::set{^untaint{^taint[$a-tab-b]}}]
                   1831: =$t.a=
                   1832: 
                   1833: #^t.append{1   2}
                   1834: 
                   1835: @mail3[]
                   1836: ^mail:send[
1.98      paf      1837:        $.from[Александр Петросян <paf@mail.design.ru>]
                   1838:        $.to[Александр Петросян <paf@mail.design.ru>]
                   1839:        $.subject[проверка2]
1.15      paf      1840:        $.body[
                   1841:                $.text[
                   1842:                        $.content-type[$.value[text/plain] $.charset[windows-1251]]
1.98      paf      1843:                        $.body[проверка^taint[uri][москва]=]
1.15      paf      1844:                ]
                   1845:                $.attachment[
                   1846:                        $.value[^file::load[text;index.html]]
                   1847:                        $.file-name[привет всем.html]                   
                   1848:                ]
                   1849:        ]
                   1850: ]
                   1851: 
                   1852: 
                   1853: @ttime[]
                   1854: $now[^date::now[]]
                   1855: $now.hour:$now.minute
                   1856: 
                   1857: @tupper[]
                   1858: $t[abcABCабвАБВ]
                   1859: $t<br>
                   1860: ^t.upper[]
                   1861: 
                   1862: @treplace[]
                   1863: $copy-paste-clean[^table::set{a b
                   1864: .      _
                   1865: ,      _
                   1866: +      _
                   1867: &      _
                   1868: ?      _
                   1869: =      _}]
                   1870: 
                   1871: $cache_key[^taint[в.а,с+я]&был?тут=недавно.cache]
                   1872: # почему-то этот replace роняет апач в 500 ошибку :(
                   1873: #^cache_key.replace[$copy-paste-clean]
                   1874: $test[abc]
                   1875: ^test.save[$cache_key]saved<br>
                   1876: $cache[^file:list[.;\.cache^$]]
                   1877: ^file:delete[$cache_key]deleted($cache.name)<br>
                   1878: 
                   1879: 
                   1880: 
                   1881: @xslt2[]
                   1882: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
                   1883: <document><block><p>привет</p></block></document>
                   1884: }]
                   1885: ^show_xdoc2[$xdoc]
                   1886: ^show_xdoc2[^xdoc.transform[templates/_document.xslt]]
                   1887: <hr>
                   1888: 
                   1889: 
                   1890: @tcache2[]
                   1891: ^cache[$DB_HOME/keyключ](2){
                   1892:        ^math:random(100)
                   1893: }
                   1894: 
                   1895: @ttaintuntaint[]
                   1896: <!-- некий панковский заголовок с буковкой C в круглых скобках -->^taint[html][
                   1897: 
                   1898: ]zz
                   1899: <hr>
                   1900: ^untaint[html]{1^taint[  ]2  3}
                   1901: 
                   1902: 
                   1903: @tappend2[]
                   1904: $t[^table::set{a       b}]^t.append{1  2}$t.a
                   1905: 
                   1906: @badvsnprintf[]
                   1907: ^connect[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz]{
                   1908: }
                   1909: 
                   1910: 
                   1911: @badoracequoting[]
                   1912: $SQL.connect-string[oracle://webspb:webpwd@mts?NLS_LANG=RUSSIAN_AMERICA.CL8MSWIN1251&NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS]
                   1913: ^connect[$SQL.connect-string]{
                   1914: ^void:sql{delete from paf}
                   1915: ^void:sql{insert into paf values (1, '$form:text')}
                   1916: $paf[^table::sql{select * from paf}]
                   1917: ^paf.menu{
                   1918:        $paf.id: ^untaint{$paf.block}<hr>
                   1919: 
                   1920: }
                   1921: <hr>
                   1922: 
                   1923: 
                   1924: ^rem{
                   1925: $news[^table::sql{select description from news}[$.limit(3)]]
                   1926: ^news.menu{
                   1927:        ^untaint{$news.description}<hr>
                   1928: 
                   1929: }
                   1930: <hr>
                   1931: }
                   1932: 
                   1933: $tables[^table::sql{select table_name from user_tables}]
                   1934: ^tables.menu{
                   1935: $tables.table_name<br>
                   1936: }
                   1937: 
                   1938: }
                   1939: <hr>
                   1940: $env:PATH
                   1941: 
                   1942: @badconstructors[]
                   1943: $bred[^string::length[]]
                   1944: $bred[^response::clear[]]
                   1945: $bred[^int::int[]]
                   1946: 
                   1947: 
                   1948: @xloadwrongtable[]
                   1949: $constr[^xdoc::load[wrongtable.xml]]
                   1950: ^show_xdoc2[$constr]
                   1951: 
                   1952: @xsetwrongtable[]
                   1953: $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251z" ?>
                   1954: <block-list>^untaint[as-is]{$constructor}</block-list>}]
                   1955: 
                   1956: 
                   1957: @tablecolumnerror[]
                   1958: $t[^table::set{a}]
                   1959: $t.$a
                   1960: 
                   1961: @roll[]
                   1962: #$date[^date::set(1970;1;2)]
                   1963: #^date.roll[month](-1)
                   1964: $date[^date::set(2038;1;1)]
                   1965: ^date.roll[month](+1)
                   1966: $date.year  $date.month  $date.day
                   1967: 
                   1968: @cookie2[]
                   1969: #=$cookie:clientType[$.value[test]]=<br>
1.159     paf      1970: =$cookie:CLASS.clientType=<br>
1.15      paf      1971: 
                   1972: 
                   1973: @tableset[]
                   1974: $a[^table::set{a
                   1975: 1
                   1976: 2}]
                   1977: ^eval(100\$a)
                   1978: 
                   1979: 
                   1980: 
                   1981: @zzz[]
                   1982: 
                   1983: 
                   1984: $constructor[
                   1985: <block1 name="main_srvr" type="0" label="Основное тело" />
                   1986: <block2 name="main_srvr2" type="0" label="Основное тело" />
                   1987: ]
                   1988: 
                   1989: $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
                   1990: <block-list>^untaint[as-is]{$constructor}</block-list>}]
                   1991: 
                   1992: $children[$constr.documentElement.childNodes]
                   1993: ^if($children){
                   1994: ^for[i](1;^children._count[]){
                   1995:        $node[$children.$i]
                   1996:        $node.nodeName<br>
                   1997: }
                   1998: }
                   1999:    
                   2000: 
                   2001: @thashforeach3[]
                   2002: $h[
                   2003:        $.a[1] 
                   2004:        $.b[2]
                   2005: ]
                   2006: $c[^table::set{a
                   2007: ^h.foreach[key;value]{$value
                   2008: }}]
                   2009: $c.a
                   2010: 
                   2011: @thashforeach2[]
                   2012: $h[
                   2013:        $.a[1] 
                   2014:        $.b[2]
                   2015: ]
                   2016: $c[
                   2017: ^h.foreach[key;value]{
                   2018:        $.$key[$value]
                   2019: }
                   2020: ]
                   2021: $c.b
                   2022: 
                   2023: @thashforeach[]
                   2024: $h[
                   2025:        $.a[1] 
                   2026:        $.b[2]
                   2027: ]
                   2028: ^h.foreach[key;value]{
                   2029:        $key=$value<br>
                   2030: }
                   2031: 
                   2032: @thashdelete[]
                   2033: $h[$.a[1] $.b[2]]
                   2034: was:<br>
                   2035: count=^h._count[] <br>
                   2036: b='$h.b' <br>
                   2037: 
                   2038: ^h.delete[b] 
                   2039: 
                   2040: now:<br>
                   2041: count=^h._count[] <br>
                   2042: b='$h.b' 
                   2043: 
                   2044: @sappend[]
                   2045: $test[123]
                   2046: ^test.save[test]
                   2047: ^test.save[append;test]
                   2048: 
                   2049: @tappend[]
                   2050: $test[^table::set{a    b
                   2051: a1     b1}]
                   2052: ^test.save[test]
                   2053: $test[^table::set{a    b
                   2054: a2     b2}]
                   2055: ^test.save[append;test]
                   2056: 
                   2057: 
                   2058: @tform[]
                   2059: ^if(def $form:new_file){y}{n}
                   2060: <form method="post" enctype="multipart/form-data">
                   2061: <input type="file" name="new_file" />
                   2062: <input type=submit>
                   2063: </input>
                   2064: 
                   2065: @formattest[]
                   2066: $size(15.124)
                   2067: 
                   2068: ^size.format{%.2f}
                   2069: 
                   2070: @filelist[]
                   2071: $html[^file:list[.;\.html^$]]
                   2072: ^html.menu{
                   2073:        $html.name<br>
                   2074: }
                   2075: <hr>
                   2076: 
                   2077: @безнадёжна_попытка_поправить_непоправимое[]
                   2078: $dom_from_disk[^xdoc::load[input.xml]]
                   2079: $dom_created_in_air[^xdoc::create[doc]]
                   2080: ^dom_created_in_air.documentElement.appendChild[^dom_from_disk.documentElement.cloneNode(1)]
                   2081: ^show_xdoc2[$dom_created_in_air]
                   2082: 
                   2083: 
                   2084: @tcache[]
                   2085: #^hashfile:clear[cache]
                   2086: $code[^hashfile::open[$DB_HOME;cache]]
                   2087: ^code.cache[key](2){
                   2088:        ^math:random(100)
                   2089: #      ^code.delete[]
                   2090: }
                   2091: 
                   2092: @thashfileexp[]
                   2093: $hf[^hashfile::open[$DB_HOME;hashfile]]
                   2094: $hf.paf[$.value[крут] $.expires(3)]
                   2095: paf=$hf.paf
                   2096: <hr>
                   2097: ^hf.foreach[key;value]{
                   2098:        $key=$value<br>
                   2099: }
                   2100: <hr>
                   2101: $hash[^hf.hash[]]
                   2102: =$hash.paf=
                   2103: <hr>
                   2104: 
                   2105: @tcounter[]
                   2106: ^tcounterone[$DB_HOME]
                   2107: other root:
                   2108: ^tcounterone[${DB_HOME}2]
                   2109: again, first:
                   2110: ^tcounterone[$DB_HOME]
                   2111: 
                   2112: @tcounterone[DB_HOME]
                   2113: $counter[^hashfile::open[$DB_HOME;counter]]
                   2114: #^counter.clear[]
                   2115: ^counter.transaction{
                   2116: #      $counter.value(10)
                   2117:        $counter.value($counter.value+1)
                   2118: #      ^counter.delete[value]
                   2119:        $counter.value
                   2120: }
                   2121: <hr>
                   2122: ^rem{
                   2123: $hash[^counter.hash[]]
                   2124: =$hash.value=
                   2125: <hr>
                   2126: }
                   2127: 
                   2128: @tablehash[]
                   2129: $productList[^table::set{id    name
                   2130: 1      носки
                   2131: 2      валенки
                   2132: 3      ушанка
                   2133: }]
                   2134: 
                   2135: #скажем, у первого дилера
                   2136: $firstPriceList[^table::set{id price
                   2137: 1      0.3
                   2138: 3      1000
                   2139: }]
                   2140: 
                   2141: $firstPriceHash[^firstPriceList.hash[id]]
                   2142: 
                   2143: ^productList.menu{
                   2144:     продукт "$productList.name" | цена у first: $firstPriceHash.[$productList.id].price<br>
                   2145: }
                   2146: 
                   2147: 
                   2148: @hashfile[]
                   2149: $hf[^hashfile::assign[hashfile]]
                   2150: #$hf.paf[крут5]
                   2151: paf=$hf.paf
                   2152: 
                   2153: @formclass[]
                   2154: ^$form:CLASS.a=$form:CLASS.a
                   2155: 
                   2156: @domdata[]
                   2157: ^if(1){
                   2158: #      $a{^hren[]}
                   2159: }
                   2160: $a
                   2161: $xdoc[^xdoc::create[doc]]
                   2162: $doc[$xdoc.documentElement]
                   2163: $name[^doc.appendChild[^xdoc.createElement[name]]]
                   2164: $text[^name.appendChild[^xdoc.createTextNode[петросян&coz]]]
                   2165: ^untaint[as-is]{=$text.nodeValue=}
                   2166: 
                   2167: @domedit[]
                   2168: ^domdata[]
                   2169: #$paf.nodeName<br>
                   2170: #$doc.documentElement.nodeName<br>
                   2171: 
                   2172: ^show_xnode1[$xdoc.documentElement;0;1]
                   2173: <hr>
                   2174: ^show_xdoc2[$xdoc]
                   2175: <hr>
                   2176: 
                   2177: @domxslt[]
                   2178: ^domdata[]
                   2179: ^show_xdoc2[^xdoc.transform[global.xsl;$.param1[123/]]]
                   2180: <hr>
                   2181: 
                   2182: @lsplit2[]
                   2183: $path[/optics/]
                   2184: $pathTable[^path.lsplit[/]]
                   2185: ^pathTable.menu{
                   2186:        ^if(def $pathTable.piece){
                   2187:                =$pathTable.piece=
                   2188:        }
                   2189: }
                   2190: 
                   2191: 
                   2192: @faceesize[]
                   2193: $k(2)
                   2194: $pict[^image::load[paf.gif]]
                   2195: $small[^image::create($pict.width/$k;$pict.height/$k)]
                   2196: ^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;250)
                   2197: $response:body[^small.gif[]]
                   2198: 
                   2199: @imageresize[]
                   2200: $k(2)
                   2201: $pict[^image::create(400*$k;200*$k)]
                   2202: $pict.line-width(2)
                   2203: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)
                   2204: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-20;$pict.height-20;0+20;360-20;0xff0000)
                   2205: #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)
                   2206: ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-20;0x0000ff)
                   2207: ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+20;360-20;0xff0000)
                   2208: $response:body[^pict.gif[]]
                   2209: 
                   2210: #$small[^image::create($pict.width/$k;$pict.height/$k)]
                   2211: #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0)
                   2212: #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;0)
                   2213: 
                   2214: #$response:body[^small.gif[]]
                   2215: 
                   2216: 
                   2217: @tintdefault[]
                   2218: #$abc[abc]
                   2219: $abc[33]
                   2220: ^abc.int[z]
                   2221: #^abc.int(123)
                   2222: 
                   2223: @ifassignhash[]
                   2224: $h[^if(1){$.a(1);$.a(2)}]
                   2225: $h.a
                   2226: 
                   2227: @ifpasshash[]
                   2228: $a[$.e[a]]
                   2229: $b[$.e[b]]
                   2230: ^ifpasshashdest[^if(1){$a;$b}]
                   2231: #$x[^if(1){$a}{$b}]
                   2232: #^ifpasshashdest[$x]
                   2233: 
                   2234: @ifpasshashdest[p]
                   2235: $p.e
                   2236: 
                   2237: @movedir[]
                   2238: ^file:move[a;deeper/a]
                   2239: 
                   2240: @replace[]
                   2241: $a[12^;3]
                   2242: ^a.replace[^table::set{from    to
                   2243: 2^;    !
                   2244: }]
                   2245: 
                   2246: 
                   2247: @set[]
                   2248: ^setdata[]
                   2249: ^a.add[$b]
                   2250: add:$a.3<br>
                   2251: 
                   2252: ^setdata[]
                   2253: ^a.sub[$b]
                   2254: sub2:$a.2<br>
                   2255: sub1:$a.1<br>
                   2256: 
                   2257: ^setdata[]
                   2258: $c[^a.union[$b]]
                   2259: union3:$c.3<br>
                   2260: union2:$c.2<br>
                   2261: 
                   2262: ^setdata[]
                   2263: $c[^a.intersection[$b]]
                   2264: intersection3:$c.3<br>
                   2265: intersection2:$c.2<br>
                   2266: 
                   2267: ^setdata[]
                   2268: intersects:^if(^a.intersects[$b]){y;n}<br>
                   2269: intersects2:^if(^a.intersects[ ]){y;n}<br>
                   2270: 
                   2271: 
                   2272: <hr>
                   2273: 
                   2274: @setdata[]
                   2275: $a[$.1[a1] $.2[a2]]
                   2276: $b[        $.2[b2] $.3[b3]]
                   2277: 
                   2278: 
                   2279: @hash[]
                   2280: $h[^hash::create[$._default[123]]]
                   2281: $h.paf[not kretin]
                   2282: $h.paf<br>
                   2283: =$h.that=<br>
                   2284: 
                   2285: @methresult[]
                   2286: $result[^table::set{1}]
                   2287: 
                   2288: @terror[]
                   2289: ^error[method z must be called with z]
                   2290: 
                   2291: @syntax1[]
                   2292: #^a[^b]
                   2293: 
                   2294: @syntax2[]
                   2295: #^a[
                   2296: 
                   2297: @ssave[]
                   2298: $abc[abc]
                   2299: ^abc.save[abc]
                   2300: 
                   2301: @calendar[]
1.103     paf      2302: $year(2002)
                   2303: $month(12)
1.84      paf      2304: ${year}-${month}:<br>
                   2305: $week_days[^date:calendar[rus]($year;$month)]
1.15      paf      2306: <pre>
1.101     paf      2307: ^week_days.menu{^for[wday](0;6){^if($week_days.$wday){$week_days.$wday;&nbsp^;&nbsp^;} }=$week_days.week,$week_days.year=<br>}
1.15      paf      2308: </pre>
                   2309: 
                   2310: @thash[]
                   2311: $table[^table::set{id  name    age
                   2312: 1      paf     278
                   2313: 2      пиф     234
                   2314: }]
                   2315: $hash[^table.hash[id;^table::set[nameless]{id
                   2316: name}]]
                   2317: $hash.2.id $hash.2.name $hash.2.age
                   2318: 
                   2319: @tdef[]
                   2320: $s[0]
                   2321: if 0=^if($s){}{n}<br>
                   2322: if def 0=^if(def $s){y}{}<br>
                   2323: <hr>
                   2324: 
                   2325: @ford[]
                   2326: ^for[i](0;5){$i}{($i)}
                   2327: 
                   2328: @tif[]
                   2329: ^if[def]{y;n}
                   2330: 
                   2331: @image[]
                   2332: $pict[^image::create(400;200)]
                   2333: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)
                   2334: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-10;$pict.height-10;0+10;360-10;0xff0000)
                   2335: #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)
                   2336: ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-10;0x0000ff)
                   2337: ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+10;360-10;0xff0000)
                   2338: $response:body[^pict.gif[]]
                   2339: 
                   2340: 
                   2341: 
                   2342: @mail2[]
                   2343: ^mail:send[
1.139     paf      2344:        $.message-id[<6615%1@parser.ru>]
1.15      paf      2345:        $.content-type[$.value[text/plain] $.charset[windows-1251]]
                   2346:        $.from[Александр Петросян <paf@design.ru>]
                   2347:        $.to[Александр Петросян <paf@design.ru>]
1.134     paf      2348:        $.subject[проверка проверка]
                   2349:        $.text[проверка]
1.15      paf      2350: ]
                   2351: 
                   2352: @cookie[]
1.115     paf      2353: #$env:HTTP_COOKIE<br>
1.15      paf      2354: 
                   2355: #$cookie:переменная[test тест ТЕСТ2]
                   2356: =$cookie:переменная=<br>
                   2357: #$cookie:переменная2[test тест ТЕСТ3]
                   2358: =$cookie:переменная2=<br>
                   2359: =$cookie:CLASS.переменная2=<br>
                   2360: 
                   2361: @response[]
                   2362: #^if($form:reload){
                   2363:        $response:refresh[$.value[0] $.url[./t.html?uri=$env:SERVER_NAME]]
                   2364: #}
                   2365: 
                   2366: @xslt[]
                   2367: ^xdata[]
                   2368: $transformed[^xdoc.transform[global.xsl;$.param1[123/]]]
                   2369: ^show_xdoc2[$transformed]
                   2370: 
                   2371: @regexp2[]
                   2372: $s[  select]
                   2373: $s[^s.match[^^\s*][]{!}]
                   2374: $s
                   2375: 
                   2376: @header[]
                   2377: $response:refresh[
                   2378:        $.value[0]
                   2379:        $.url[http://design.ru?a=^taint[123]]
                   2380: ]
                   2381: 
                   2382: @ttablerem[]
                   2383: $table[^table::load[a.cfg]]
                   2384: ^table.menu{$table.a}
                   2385: 
                   2386: @tconnect[]
                   2387: ^connect[mysql://test:test@paf/test?charset=cp1251_koi8&compress=1&timeout=1&named_pipe=1]{
                   2388: $tables[^table::sql{show tables}]
                   2389: #$cols[^tables.columns[]]
                   2390: #$cols.column
                   2391: ^tables.menu{
                   2392:        $tables.[Tables_in_test]<br>
                   2393: }
                   2394: }
                   2395: 
                   2396: @pcre[]
                   2397: $s[1 2]
                   2398: ^s.match[\s;ig]{!}
                   2399: #^s.match[\d;ig]{!}
                   2400: 
                   2401: 
                   2402: @regexp[]
                   2403: $s[abcАБВ]
                   2404: ^if(^s.match[б][i]){y}{n}
                   2405: 
                   2406: @mail[]
                   2407: #$ORIGINS(1)
                   2408: ^mail:send[
                   2409:        $.from[paf@design.ru]
                   2410:        $.to[paf@design.ru]
                   2411:        $.body[1
                   2412:        
                   2413:        2
                   2414:        
                   2415:        
                   2416:                3]
                   2417: ]
                   2418: 
                   2419: @fori[][i]
                   2420: ^for[i](1;3){... =$i= ...}
                   2421: 
                   2422: @xdata0[]
                   2423: #$response:content-type[$.value[text/html] $.charset[windows-1251]]
                   2424: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
                   2425: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
                   2426: <people>
                   2427:        <man id="1" имя="word слово">
                   2428:                <name>P&#171^;AF        B</name>
                   2429:        </man>
                   2430:                <man id="2">
                   2431:                        <name>ПИФ^taint[&]</name>
                   2432:                </man>
                   2433: </people>
                   2434: }]
                   2435: 
                   2436: @xdata[]
                   2437: #$response:content-type[$.value[text/html] $.charset[windows-1251]]
1.156     paf      2438: $xdoc[^xdoc::create{<?xml version="1.0" encoding="windows-1251"?>
1.15      paf      2439: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
                   2440: <people>
                   2441:        <man id="1" имя="word слово">
                   2442:                <name>P&#171^;AF        B</name>
                   2443:        </man>
                   2444:                <man id="2">
                   2445:             <name>ПИФ^taint[&]</name>
                   2446:                </man>
                   2447: </people>
1.156     paf      2448: }]
1.15      paf      2449: 
                   2450: @xml[]
                   2451: ^xdata[]
                   2452: 
                   2453: ^show_xdoc2[$xdoc]<hr>
                   2454: #^show_xnode1[$xdoc]<hr>
                   2455: $people[^xdoc.select[*/man]]
                   2456: #^show1[]
                   2457: ^show_xnodes1[$people]<hr>
                   2458: #^people.0.owner.hren[]
                   2459: 
                   2460: ^show_xnode1[^xdoc.selectSingle[*/man[2]/name];0;1]<hr>
                   2461: 
                   2462: by id:
                   2463: ^show_xnode1[^xdoc.getElementById[1];0;1]
                   2464: <hr>
                   2465: 
                   2466: @show1[array]
                   2467: ^for[i](0;^array._count[]-1){
                   2468:     $x[$array.$i]
                   2469:        $x.firstChild.nodeValue: 
                   2470:                $pattributes[$x.parentNode.attributes]
                   2471:                ^if(^pattributes._count[]){
                   2472:                        $pattributes.id.name=$pattributes.id.nodeValue
                   2473:                }
                   2474:        <br>
                   2475: }
                   2476:        
                   2477: @show_xnodes1[array][i]
                   2478: ^for[i](0;^array._count[]-1){
                   2479:        ^show_xnode1[$array.$i;0;1]
                   2480: }
                   2481: 
                   2482: @show_xnode1[x;level;single][l]
                   2483: ^if(def $x){
                   2484:     ^for[l](0;$level-1){&nbsp^;&nbsp^;&nbsp^;&nbsp^;}
                   2485:     ^if($x.nodeType == $xnode:ELEMENT_NODE){
                   2486:        &lt^;$x.nodeName
                   2487:            $pairs[$x.attributes]
                   2488:            ^if(def $pairs){
                   2489:                $names[^pairs._keys[]]
                   2490:                ^names.menu{ $names.key="$pairs.[$names.key].nodeValue"}
                   2491:            }
                   2492:            &gt^;
                   2493:     }{
                   2494:        [$x.nodeType]
                   2495:     }
                   2496:     
                   2497:     ^if(def $x.nodeValue){$x.nodeValue}<br>
                   2498:     ^show_xnode1[$x.firstChild]($level+1)
                   2499:     ^if(!$single){
                   2500:            ^show_xnode1[$x.nextSibling]($level)
                   2501:     }
                   2502: 
                   2503:     ^if($x.nodeType == $xnode:ELEMENT_NODE){
                   2504:     ^for[l](0;$level-1){&nbsp^;&nbsp^;&nbsp^;&nbsp^;}&lt^;/$x.nodeName&gt^;<br>
                   2505:     }
                   2506: }
                   2507: 
                   2508: @show_xdoc2[xdoc]
                   2509: ^xdoc.save[out/save.xml;
                   2510: #      $.encoding[utf-8]
                   2511:        $.method[xml]
                   2512: ]
                   2513: $file[^xdoc.file[
                   2514:        $.encoding[utf-8]
                   2515:        $.method[html]
                   2516: ]]
                   2517: ^file.save[text;out/save_file.html]
                   2518: #$response:body[^xdoc.file[    $.media-type[text/paf]  ]]
                   2519: <pre>^taint[html][^xdoc.string[
                   2520:        $.method[html]
                   2521: #      $.encoding[utF-8]
                   2522: #      $.omit-xml-declaration[yes]
                   2523: #      $.standalone[no]
                   2524: #      -$.doctype-public[-//W3C//DTD XHTML]
                   2525: #      -$.doctype-system[/a/b/c/]
                   2526: #      $.indent[yes]
                   2527: #      $.media-type[text/paf]
                   2528: ]]
                   2529: </pre>

E-mail: