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

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

E-mail: