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

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

E-mail: