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

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

E-mail: