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

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

E-mail: