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

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

E-mail: