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

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

E-mail: