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

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

E-mail: