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

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

E-mail: