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

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

E-mail: