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

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

E-mail: