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

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

E-mail: