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

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

E-mail: