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

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

E-mail: