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

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

E-mail: