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

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

E-mail: