Diff for /parser3/www/htdocs/Attic/index.html between versions 1.48 and 1.211

version 1.48, 2002/04/22 09:20:30 version 1.211, 2003/03/08 12:22:06
Line 1 Line 1
 @USE  15
 t.p  
   
 @autoz[]  
 $request:charset[windows-1251]  
 $response:charset[windows-1251]  
 $response:content-type[$.value[text/html]$.charset[$response:charset]]  
   
 #@postprocess[body]  
 #<b>$body</b>  
 #$result[123]  
   
 @main[]  
 #^tcrashlocaljunctionsv2[]  
 ^tcrashlocaljunctions[]  
 #^tjunctions[]  
 #^replacetest[]  
 #^matchoptionpp[]  
 #^txdocxnodechild[]  
 #^tclasses[]  
 #$math:PI  
 #^b:method[]  
 #^main[]  
 #^errort[]  
 #^tselectNumber[]  
 #$result[hello]  
 #^invaliddate2[]  
 #^process2[]  
 #^casehashtext[]  
 #^subjvaltest[]  
 #^tableselect0[]  
 #^memnotest1[]  
 #^transparams[]  
 #^voidparams[]  
 #^rolls2[]  
 #^cacheexpireschanging[]  
 #^cacheexpiresfixed[]  
 #^dateoffsets[]  
 #^exceptionTypes[]  
 #^roll2[]  
 #^rolls[]  
 #^exceptions1[]  
 #^locate_by_expr[]  
 #^method_junction_params{...}  
 #^verifyCookie[paf]  
 #^execlangs[]  
 #$t[^tobjeresult[]]$t.a  
 #^xmlprobs[]  
 #^doubleprobs[]  
 #^math:random(-10)  
 #^divnamestop[]  
 #^arrayclone[]  
 #^operator_tricks[]  
 #^xoutputrusattr[]  
 #^xdocset1[]  
 #^regexp3[]  
 #^exec2[]  
 #^tlock[]  
 #^xmloutattrwithoutvalue[]  
 #^precisionProblem[]  
 #^xpath[]  
 #^ttablesetlang[]  
 #^mail3[]  
 #^ttime[]  
 #^tupper[]  
 #^treplace[]  
 #^xslt2[]  
 #^tcache2[]  
 #$ORIGINS(1)  
 #$t[^table::set{a b} ^table::set{c d}]  
 #^ttaintuntaint[]  
 #^tappend2[]  
 #^badvsnprintf[]  
 #^badoracequoting[]  
 #^badconstructors[]  
 #^xloadwrongtable[]  
 #^xsetwrongtable[]  
 #^if($form:test){y}{n}  
 #^tablecolumnerror[]  
 #^roll[]  
 #^cookie2[]  
 #^tableset[]  
 #^math:PI.format{%.30f}  
 #^xchildren[]  
 #^thashforeach3[]  
 #^thashforeach2[]  
 #^thashforeach[]  
 #^thashdelete[]  
 #^connect[mysql://user:pass@cd.rinet.ru/db]{^void:sql{z} }  
 #^tappend[]  
 #^sappend[]  
 #^eval(10\3)<br>  
 #^tform[]  
 #^formattest[]  
 #^filelist[]  
 #^connect[mysql://user:pass@host]{ }  
 #^безнадёжна_попытка_поправить_непоправимое[]  
 #^tcache[]  
 #^thashfileexp[]  
 #^tcounter[]  
 #^tablehash[]  
 #j^hashfile[]  
 #^formclass[]  
 #^hren[]  
 #^domedit[]  
 #^domxslt[]  
 #^lsplit2[]  
 #^faceesize[]  
 #^imageresize[]  
 #^ifassignhash[]  
 #^tintdefault[]  
 #$response:status[404]  
 #^ifpasshash[]  
 #^movedir[]  
 #^replace[]  
 #^set[]  
 #^hash[]<hr>  
 #$t[^methresult[]] ->$t  
 #^terror[]  
 #^ssave[]  
 #^calendar[]  
 #^thash[]  
 #^tdef[]  
 #^ford[]  
 #^tif[]  
 #^image[]  
 #^mail2[]  
 #^cookie[]  
 #^response[]  
 #^regexp2[]  
 #^ttablerem[]  
 #^pcre[]  
 #^regexp[]<hr>  
 #^mail[]  
 #^exec[]  
 #^fori[]  
 #^tconnect[]  
 #^xslt[]  
 #^xml[]  
 #^header[]  
 <hr>  
 OK  
   
 @tcrashlocaljunctionsv2[]  
 $a[  
         $b{  $c[1] }  
 ]  
 $b  
 $c  
   
 @tcrashlocaljunctions[]  
 $var[aaa]  
 ^if(1){  
 ^tcrashlocaljunctions1[]  
 }  
   
 $j  
   
 @tcrashlocaljunctions1[]  
         $j{  
                 $var  
         }  
   
 @tjunctions[][tl]  
 $t[^t::create[]]  
 ^tjunctionsi[]  
   
 @tjunctionsi[][tl]  
 $tl[12345]  
 ^t.tjunctionsm[  
         $.key{  
                 $tl  
         }  
 ]  
   
 @replacetest[]  
 $b[b]  
 $s[  
 aaaaaaaaaa${b}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa${b}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 ]  
 ^s.replace[^table::create{from  to  
 ba      !_}]  
   
   
 @matchoptionpp[]  
 #$ORIGINS(1)  
 $s[  
 aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
 ]  
 ^s.match[b;g']{($match.prematch|$match.match|$match.postmatch)}  
   
   
 @txdocxnodechild[]  
 $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?><d/>}]  
 $xdoc.nodeName  
 ^xdoc.selectNumber[2*2]  
 $xdoc:ELEMENT_NODE  
   
   
 @tclasses[]  
 $t[^t::create[]]  
 ^t.method[]  
 <hr>  
 ^t.base_method[]  
   
   
 @errort[]  
 ^xdoc::create[a]  
 #^throw[user;here;this]  
   
 @tselectNumber[]  
 $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d attr="привет" n="123"/>}]  
 ^d.selectString[string(d/@attr)]<br>  
 ^d.selectNumber[2*2]<br>  
 ^d.selectNumber[number(/d/@n)+1]<br>  
   
   
 @invaliddate2[]  
 $d[^date::create(1018946575/60/60)] ^d.sql-string[]  
   
 @process2[]  
 ^^process{  
         ^process{  
                 ^$a[^^if(0){^$.k[y]}{^$.k[^^hren[]n]}] ^$a.k  
         }  
 }  
   
 @casehashtext[]  
 $tt[1]  
 $tmp[  
         ^switch[$tt]{  
                 ^case[1]{  
                         $.aaa[123]  
                 }  
                 ^case[DEFAULT]{  
                         $.bbb[456]  
                 }  
         }  
         shit!  
 ]  
 #$tmp  
 $tmp.aaa  
   
 @subjvaltest[]  
 $a12[val]  
 $b[12]  
 $a$b  
   
 @tableselect0[]  
 $person[^table::create{name     height  
 paf     1.77  
 шохин   2.07  
 moko    1.77  
 }]  
 $nottoohigh[^person.select($person.height<2)]  
 ^nottoohigh.menu{$nottoohigh.name<br>}  
   
 @transparams[]  
 $idoc[^xdoc::create{<?xml version="1.0" ?><doc/>}]  
 $odoc[^idoc.transform[global.xsl;  
         $.param1['1']  
         $.param2['2']  
 ]]  
 <pre>^taint[^odoc.string[$.method[html]]]  
   
 @memnotest1[]  
 ^for[i](0;4000){  
   
  $xxxx[$i]  
  $xxxx  
   
 }  
   
 @memnotest1notes[]  
 одна итерация цикла:  
 [Mon Apr  8 20:12:02 2002] execution-------------------------|  
 '469641+=28 wcodeframe -> 0 !optimize[3]''469669+=49 string от {} -> 0 optimize[3]'  
 [Mon Apr  8 20:12:02 2002] 12:STRING__WRITE  
 [Mon Apr  8 20:12:02 2002]  "|| "  
 [Mon Apr  8 20:12:02 2002] 12:WITH_ROOT  
 [Mon Apr  8 20:12:02 2002] 13:VALUE  
 [Mon Apr  8 20:12:02 2002]  "xxxx" string  
 [Mon Apr  8 20:12:02 2002] 14:CREATE_EWPOOL'469377+=24 wcodeframe -> 0 !optimize[1]''469401+=49 string -> 41 !optimize[7]'  
 [Mon Apr  8 20:12:02 2002] 16:WITH_READ  
 [Mon Apr  8 20:12:02 2002] 17:VALUE  
 [Mon Apr  8 20:12:02 2002]  "i" string  
 [Mon Apr  8 20:12:02 2002] 18:GET_ELEMENT  
 [Mon Apr  8 20:12:02 2002] 17:WRITE_VALUE'469452+=40 MAX_NUMBER -> !~2 actual digits''469492+=49 -> 41 !'  
 [Mon Apr  8 20:12:02 2002] 16:REDUCE_EWPOOL'469541+=24 VString -> 0 optimize[5]'  
 [Mon Apr  8 20:12:02 2002] 15:CONSTRUCT_VALUE  
 [Mon Apr  8 20:12:02 2002] 12:STRING__WRITE  
 [Mon Apr  8 20:12:02 2002]  "| "  
 [Mon Apr  8 20:12:02 2002] 12:WITH_READ  
 [Mon Apr  8 20:12:02 2002] 13:VALUE  
 [Mon Apr  8 20:12:02 2002]  "xxxx" string  
 [Mon Apr  8 20:12:02 2002] 14:GET_ELEMENT  
 [Mon Apr  8 20:12:02 2002] 13:WRITE_VALUE'469573+=41 string expand nothing for now'  
 [Mon Apr  8 20:12:02 2002] 12:STRING__WRITE  
 [Mon Apr  8 20:12:02 2002]  "||"'469617+=24 VString -> 0 !optimize[6]'  
 [Mon Apr  8 20:12:02 2002] <-ja returned  
 [Mon Apr  8 20:12:02 2002] ja->  
   
 201/328=0.612804878049 %%optimized  
   
 1.  
 CREATE_*POOL  
     сделать  
 *POOL_POOLED+CODE  
     где  
         wwrapper  
         и(возможно) wcodeframe  
         +string  
         стековая переменная  
   
 2.  
 избавиться от обёртки при возврате результата process [см. тело _for]  
   
 3.  
 сделать callback для process, чтобы вынести invariants из _for & co.  
   
 4.  
  @todo склеить get_element и write_value (при вставлении? write_value)  
   
 5.  
 reduce_*pool -> вариант получить именно string, без VString обёртки [часто  
 обёртка сразу выбрасывается = не нужна]  
   
 6.  
 process вариант получить именно string, без VString обёртки [часто обёртка  
 сразу выбрасывается = не нужна]  
   
 7.  
 string head, убить 8 байт неправильной link  
   
 @voidparams[]  
 ^voidparamsm[$form:field]  
   
 @voidparamsm[p]  
 ^p.int(123)  
   
 @rolls2[]  
 $now[^date::now[]]  
 $d[^date::create($now.year;$now.month)] ^d.sql-string[]<br>  
 ^for[i](1;12){  
         ^d.roll[month](-1) ^d.sql-string[]<br>  
 }  
   
 @cacheexpireschanging[]  
 ^cache[$DB_HOME/keyключ][^date::now(+1)]{ ^rem{1 day}  
     ^cache[^date::now(+4/24/60/60)]  
 #    ^cache(2)  
 #    ^cache(0)  
         ^math:random(100)  
 }  
   
   
   
 @cacheexpiresfixed[]  
 ^cache[$DB_HOME/keyключ][^date::now(+2/24/60/60)]{  
         ^math:random(100)  
 }  
   
 @dateoffsets[]  
 $d[^date::create(^date::now[]+1/24/60)]  
 #$d[^date::now(+1/24/60)]  
 ^d.sql-string[]  
 #$d  
   
 @exceptionTypes[]  
 #    parser.compile       ^test[}                компиляция (непарная скобка, ...)  
 #    parser.runtime       ^if(0).                параметры (больше/меньше, чем нужно, не тех типов, ...)  
 #    number.zerodivision  ^eval(1/0) ^eval(1%0)  
 #    number.format        ^eval(abc*5)  
 #    file.missing         ^file:delete[delme]                       not found  
 #    file.access          ^table::load[.]                       no rights  
 #    image.format         ^image::measure[index.html]                        not gif/jpg  
 #    sql.connect          ^connect[mysql://baduser:pass@host/db]{}                       not found/timeout  
 #    sql.execute          ^connect[mysql://okuser:pass@host/db]{^void:sql{select bad}}                       syntax error  
 #    xml                  ^xdoc::create{<forgot?>}                       any error in xml/xslt libs  
 #    smtp.connect                                not found/timeout  
 #    smtp.execute                                communication error  
   
 @roll2[]  
 $d[^date::create(2002;4;2;2;2;3)] ^d.sql-string[]<br>  
 ^d.roll[day](+365*3+1) ^d.sql-string[]<br>  
   
   
 @rolls[]  
 $d[^date::create(2002;4;4)]  
 ^d.sql-string[]<br>  
 ^for[i](1;7){  
 ^d.roll[day](-1)  
 ^d.sql-string[]<br>  
 }  
 <hr>  
 $d[^date::create(2002;3;28)]  
 ^d.sql-string[]<br>  
 ^for[i](1;7){  
 ^d.roll[day](+1)  
 ^d.sql-string[]<br>  
 }  
 <hr>  
 $d[^date::create(2002;12;3)]  
 ^d.sql-string[]<br>  
 ^for[i](1;14){  
 ^d.roll[day](-1)  
 ^d.sql-string[]<br>  
 }  
 <hr>  
 $d[^date::create(2002;10;19)]  
 ^d.sql-string[]<br>  
 ^for[i](1;14){  
 ^d.roll[day](+1)  
 ^d.sql-string[]<br>  
 }  
   
   
   
   
   
   
 @exceptions1[]  
 ^try{  
         aaa  
         ^throw[custom1;paf;is stupid]  
 }{  
         ^if($exception.type eq custom1){  
 #               $exception.handled(1)  
         ^throw[$exception]  
                 type=$exception.type<br>  
             source=$exception.source<br>  
             file=$exception.file<br>  
             lineno=$exception.lineno<br>  
         comment=$exception.comment<br>  
         }  
 }  
   
 @locate_by_expr[]  
 $t[^table::create{a     b  
 1       nok  
 2       ok  
 3       nok  
 }]  
 ^if(^t.locate($t.a==2)){$t.b}{n}  
   
 @method_junction_params[param]  
 ^if($param is junction){junction}{ne junction}  
   
 @verifyCookie[value]   
 ^if($cookie:dummyvote eq $value){   
         $result(1)   
 }{   
         $cookie:dummyvote[$value]   
         $result(0)   
 }  
   
 @execlangs[]  
 $f[^file::exec[test.pl]]  
 err:$f.stderr<br>  
 ^process{$f.text}  
 #$c[^t.columns[]]  
 #^c.menu{  
 #* $c.column<br>  
 #}  
 c:$t.c<br>  
   
 @tobjeresult[]  
 ^table::create{a  
 12}  
   
 @xmlprobs[]  
 $xmlDataType[^xdoc::load[program.xml]]  
 #<pre>^taint[^xmlDataType.string[]]  
 $xmlDataTypes[^xmlDataType.select[programs/program[@id=4]/data]]  
 #=^xmlDataTypes._count[]=  
 =^xmlDataTypes.0.getAttribute[type-id]=  
   
 @doubleprobs[]  
 $1(^math:radians(180))  
 $2($math:PI)  
 ^if(^1.format[%.10f]==^2.format[%.10f]){y;n}  
 ^if($1==$2){y;n}  
 ^if(^math:radians(180)==$math:PI){y;n}  
   
   
 @divnamestop[]  
 $a(10)  
 ^eval($a\3)  
   
 @arrayclone[]  
 $t[^table::create{a     b  
 1       11  
 2       22  
 }]  
 $c[^table::create[$t]]  
 ^c.append{2     33}  
 ^t.count[]  
 ^c.count[]  
   
 @operator_tricks[]  
 ^if(1){$a[^t[]]}  
 $a!  
 $a($b)  
 ^if(1){y}{n}  
 $MAIN:a(^t[] eq OK)  
 #$MAIN:a(1)  
 ^if($a){y}{n}  
 #^if(1){y}{n}  
 $form:if  
 $a[$.n[1]]  
 $a.if  
   
 @xoutputrusattr[]  
 $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d attr="привет"/>}]  
 ^show_xdoc2[$d]  
   
 @xdocset1[]  
 $d[^xdoc::set{<?xml version="1.0"?><d>=^taint[&]=</d>}]  
 ^show_xdoc2[$d]  
   
 @regexp3[]  
 $s[abcАБВ]  
 ^if(^s.match[][i]){y}{n}  
   
   
 @exec2[]  
 $a[^file::exec[bin/t.cmd]]  
 <pre>^taint[$a.text]</pre>|$a.status|$a.stderr<hr>  
   
   
 @tlock[]  
 ^file:lock[lockfile]{  
         code  
 }  
   
 @xmloutattrwithoutvalue[]  
 #$ORIGINS(1)  
 $doc[^xdoc::set{<?xml version="1.0"?><doc background="">zz</doc>}]  
 $doc[^doc.transform[global.xsl]]  
 =^taint[html][^doc.string[$.method[html]]]=  
   
   
   
 @precisionProblem[]  
 $a[123456789012345678901234567890]  
 $b(^a.double[])  
 ^b.format{%.20E}  
 <hr>  
 ^eval(2*2)  
   
 @xpath[]  
 $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>  
 <document><block><p>привет</p></block></document>  
 }]  
 #^show_xdoc2[$xdoc]  
 $node[^xdoc.selectSingle[/document/block/p]]  
 ^if(def $node){  
         ^if($node is string){  
                 $node  
         }{  
         ^if($node is hash){  
                 ^node._count[]  
         }{  
                 $node.nodeType  
         }  
         }  
 #$node.firstChild.nodeValue  
 }{  
         node not found  
 }  
   
   
 @ttablesetlang[]  
 $a-tab-b[a      b  
 1       2]  
   
 $t[^table::set{$a-tab-b}]  
 =$t.a=  
 <hr>  
   
 $t[^table::set[nameless]{^taint[$a-tab-b]}]  
 =$t.0=  
 <hr>  
   
 $t[^table::set{^untaint{^taint[$a-tab-b]}}]  
 =$t.a=  
   
 #^t.append{1    2}  
   
 @mail3[]  
 ^mail:send[  
         $.from[Александр Петросян <paf@design.ru>]  
         $.to[Александр Петросян <paf@design.ru>]  
         $.subject[проверка4]  
         $.body[  
                 $.text[  
                         $.content-type[$.value[text/plain] $.charset[windows-1251]]  
                         $.body[проверка]  
                 ]  
                 $.attachment[  
                         $.value[^file::load[text;index.html]]  
                         $.file-name[привет всем.html]                     
                 ]  
         ]  
 ]  
   
   
 @ttime[]  
 $now[^date::now[]]  
 $now.hour:$now.minute  
   
 @tupper[]  
 $t[abcABCабвАБВ]  
 $t<br>  
 ^t.upper[]  
   
 @treplace[]  
 $copy-paste-clean[^table::set{a b  
 .       _  
 ,       _  
 +       _  
 &       _  
 ?       _  
 =       _}]  
   
 $cache_key[^taint[в.а,с+я]&был?тут=недавно.cache]  
 # почему-то этот replace роняет апач в 500 ошибку :(  
 #^cache_key.replace[$copy-paste-clean]  
 $test[abc]  
 ^test.save[$cache_key]saved<br>  
 $cache[^file:list[.;\.cache^$]]  
 ^file:delete[$cache_key]deleted($cache.name)<br>  
   
   
   
 @xslt2[]  
 $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>  
 <document><block><p>привет</p></block></document>  
 }]  
 ^show_xdoc2[$xdoc]  
 ^show_xdoc2[^xdoc.transform[templates/_document.xslt]]  
 <hr>  
   
   
 @tcache2[]  
 ^cache[$DB_HOME/keyключ](2){  
         ^math:random(100)  
 }  
   
 @ttaintuntaint[]  
 <!-- некий панковский заголовок с буковкой C в круглых скобках -->^taint[html][  
   
 ]zz  
 <hr>  
 ^untaint[html]{1^taint[  ]2  3}  
   
   
 @tappend2[]  
 $t[^table::set{a        b}]^t.append{1  2}$t.a  
   
 @badvsnprintf[]  
 ^connect[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz]{  
 }  
   
   
 @badoracequoting[]  
 $SQL.connect-string[oracle://webspb:webpwd@mts?NLS_LANG=RUSSIAN_AMERICA.CL8MSWIN1251&NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS]  
 ^connect[$SQL.connect-string]{  
 ^void:sql{delete from paf}  
 ^void:sql{insert into paf values (1, '$form:text')}  
 $paf[^table::sql{select * from paf}]  
 ^paf.menu{  
         $paf.id: ^untaint{$paf.block}<hr>  
   
 }  
 <hr>  
   
   
 ^rem{  
 $news[^table::sql{select description from news}[$.limit(3)]]  
 ^news.menu{  
         ^untaint{$news.description}<hr>  
   
 }  
 <hr>  
 }  
   
 $tables[^table::sql{select table_name from user_tables}]  
 ^tables.menu{  
 $tables.table_name<br>  
 }  
   
 }  
 <hr>  
 $env:PATH  
   
 @badconstructors[]  
 $bred[^string::length[]]  
 $bred[^response::clear[]]  
 $bred[^int::int[]]  
   
   
 @xloadwrongtable[]  
 $constr[^xdoc::load[wrongtable.xml]]  
 ^show_xdoc2[$constr]  
   
 @xsetwrongtable[]  
 $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251z" ?>  
 <block-list>^untaint[as-is]{$constructor}</block-list>}]  
   
   
 @tablecolumnerror[]  
 $t[^table::set{a}]  
 $t.$a  
   
 @roll[]  
 #$date[^date::set(1970;1;2)]  
 #^date.roll[month](-1)  
 $date[^date::set(2038;1;1)]  
 ^date.roll[month](+1)  
 $date.year  $date.month  $date.day  
   
 @cookie2[]  
 #=$cookie:clientType[$.value[test]]=<br>  
 =$cookie:clientType=<br>  
   
   
 @tableset[]  
 $a[^table::set{a  
 1  
 2}]  
 ^eval(100\$a)  
   
   
   
 @zzz[]  
   
   
 $constructor[  
 <block1 name="main_srvr" type="0" label="Основное тело" />  
 <block2 name="main_srvr2" type="0" label="Основное тело" />  
 ]  
   
 $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>  
 <block-list>^untaint[as-is]{$constructor}</block-list>}]  
   
 $children[$constr.documentElement.childNodes]  
 ^if($children){  
 ^for[i](1;^children._count[]){  
         $node[$children.$i]  
         $node.nodeName<br>  
 }  
 }  
      
   
 @thashforeach3[]  
 $h[  
         $.a[1]   
         $.b[2]  
 ]  
 $c[^table::set{a  
 ^h.foreach[key;value]{$value  
 }}]  
 $c.a  
   
 @thashforeach2[]  
 $h[  
         $.a[1]   
         $.b[2]  
 ]  
 $c[  
 ^h.foreach[key;value]{  
         $.$key[$value]  
 }  
 ]  
 $c.b  
   
 @thashforeach[]  
 $h[  
         $.a[1]   
         $.b[2]  
 ]  
 ^h.foreach[key;value]{  
         $key=$value<br>  
 }  
   
 @thashdelete[]  
 $h[$.a[1] $.b[2]]  
 was:<br>  
 count=^h._count[] <br>  
 b='$h.b' <br>  
   
 ^h.delete[b]   
   
 now:<br>  
 count=^h._count[] <br>  
 b='$h.b'   
   
 @sappend[]  
 $test[123]  
 ^test.save[test]  
 ^test.save[append;test]  
   
 @tappend[]  
 $test[^table::set{a     b  
 a1      b1}]  
 ^test.save[test]  
 $test[^table::set{a     b  
 a2      b2}]  
 ^test.save[append;test]  
   
   
 @tform[]  
 ^if(def $form:new_file){y}{n}  
 <form method="post" enctype="multipart/form-data">  
 <input type="file" name="new_file" />  
 <input type=submit>  
 </input>  
   
 @formattest[]  
 $size(15.124)  
   
 ^size.format{%.2f}  
   
 @filelist[]  
 $html[^file:list[.;\.html^$]]  
 ^html.menu{  
         $html.name<br>  
 }  
 <hr>  
   
 @безнадёжна_попытка_поправить_непоправимое[]  
 $dom_from_disk[^xdoc::load[input.xml]]  
 $dom_created_in_air[^xdoc::create[doc]]  
 ^dom_created_in_air.documentElement.appendChild[^dom_from_disk.documentElement.cloneNode(1)]  
 ^show_xdoc2[$dom_created_in_air]  
   
   
 @tcache[]  
 #^hashfile:clear[cache]  
 $code[^hashfile::open[$DB_HOME;cache]]  
 ^code.cache[key](2){  
         ^math:random(100)  
 #       ^code.delete[]  
 }  
   
 @thashfileexp[]  
 $hf[^hashfile::open[$DB_HOME;hashfile]]  
 $hf.paf[$.value[крут] $.expires(3)]  
 paf=$hf.paf  
 <hr>  
 ^hf.foreach[key;value]{  
         $key=$value<br>  
 }  
 <hr>  
 $hash[^hf.hash[]]  
 =$hash.paf=  
 <hr>  
   
 @tcounter[]  
 ^tcounterone[$DB_HOME]  
 other root:  
 ^tcounterone[${DB_HOME}2]  
 again, first:  
 ^tcounterone[$DB_HOME]  
   
 @tcounterone[DB_HOME]  
 $counter[^hashfile::open[$DB_HOME;counter]]  
 #^counter.clear[]  
 ^counter.transaction{  
 #       $counter.value(10)  
         $counter.value($counter.value+1)  
 #       ^counter.delete[value]  
         $counter.value  
 }  
 <hr>  
 ^rem{  
 $hash[^counter.hash[]]  
 =$hash.value=  
 <hr>  
 }  
   
 @tablehash[]  
 $productList[^table::set{id     name  
 1       носки  
 2       валенки  
 3       ушанка  
 }]  
   
 #скажем, у первого дилера  
 $firstPriceList[^table::set{id  price  
 1       0.3  
 3       1000  
 }]  
   
 $firstPriceHash[^firstPriceList.hash[id]]  
   
 ^productList.menu{  
     продукт "$productList.name" | цена у first: $firstPriceHash.[$productList.id].price<br>  
 }  
   
   
 @hashfile[]  
 $hf[^hashfile::assign[hashfile]]  
 #$hf.paf[крут5]  
 paf=$hf.paf  
   
 @formclass[]  
 ^$form:CLASS.a=$form:CLASS.a  
   
 @domdata[]  
 ^if(1){  
 #       $a{^hren[]}  
 }  
 $a  
 $xdoc[^xdoc::create[doc]]  
 $doc[$xdoc.documentElement]  
 $name[^doc.appendChild[^xdoc.createElement[name]]]  
 $text[^name.appendChild[^xdoc.createTextNode[петросян&coz]]]  
 ^untaint[as-is]{=$text.nodeValue=}  
   
 @domedit[]  
 ^domdata[]  
 #$paf.nodeName<br>  
 #$doc.documentElement.nodeName<br>  
   
 ^show_xnode1[$xdoc.documentElement;0;1]  
 <hr>  
 ^show_xdoc2[$xdoc]  
 <hr>  
   
 @domxslt[]  
 ^domdata[]  
 ^show_xdoc2[^xdoc.transform[global.xsl;$.param1[123/]]]  
 <hr>  
   
 @lsplit2[]  
 $path[/optics/]  
 $pathTable[^path.lsplit[/]]  
 ^pathTable.menu{  
         ^if(def $pathTable.piece){  
                 =$pathTable.piece=  
         }  
 }  
   
   
 @faceesize[]  
 $k(2)  
 $pict[^image::load[paf.gif]]  
 $small[^image::create($pict.width/$k;$pict.height/$k)]  
 ^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;250)  
 $response:body[^small.gif[]]  
   
 @imageresize[]  
 $k(2)  
 $pict[^image::create(400*$k;200*$k)]  
 $pict.line-width(2)  
 ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)  
 ^pict.arc($pict.width/2;$pict.height/2;$pict.width-20;$pict.height-20;0+20;360-20;0xff0000)  
 #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)  
 ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-20;0x0000ff)  
 ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+20;360-20;0xff0000)  
 $response:body[^pict.gif[]]  
   
 #$small[^image::create($pict.width/$k;$pict.height/$k)]  
 #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0)  
 #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;0)  
   
 #$response:body[^small.gif[]]  
   
   
 @tintdefault[]  
 #$abc[abc]  
 $abc[33]  
 ^abc.int[z]  
 #^abc.int(123)  
   
 @ifassignhash[]  
 $h[^if(1){$.a(1);$.a(2)}]  
 $h.a  
   
 @ifpasshash[]  
 $a[$.e[a]]  
 $b[$.e[b]]  
 ^ifpasshashdest[^if(1){$a;$b}]  
 #$x[^if(1){$a}{$b}]  
 #^ifpasshashdest[$x]  
   
 @ifpasshashdest[p]  
 $p.e  
   
 @movedir[]  
 ^file:move[a;deeper/a]  
   
 @replace[]  
 $a[12^;3]  
 ^a.replace[^table::set{from     to  
 2^;     !  
 }]  
   
   
 @set[]  
 ^setdata[]  
 ^a.add[$b]  
 add:$a.3<br>  
   
 ^setdata[]  
 ^a.sub[$b]  
 sub2:$a.2<br>  
 sub1:$a.1<br>  
   
 ^setdata[]  
 $c[^a.union[$b]]  
 union3:$c.3<br>  
 union2:$c.2<br>  
   
 ^setdata[]  
 $c[^a.intersection[$b]]  
 intersection3:$c.3<br>  
 intersection2:$c.2<br>  
   
 ^setdata[]  
 intersects:^if(^a.intersects[$b]){y;n}<br>  
 intersects2:^if(^a.intersects[ ]){y;n}<br>  
   
   
 <hr>  
   
 @setdata[]  
 $a[$.1[a1] $.2[a2]]  
 $b[        $.2[b2] $.3[b3]]  
   
   
 @hash[]  
 $h[^hash::create[$._default[123]]]  
 $h.paf[not kretin]  
 $h.paf<br>  
 =$h.that=<br>  
   
 @methresult[]  
 $result[^table::set{1}]  
   
 @terror[]  
 ^error[method z must be called with z]  
   
 @syntax1[]  
 #^a[^b]  
   
 @syntax2[]  
 #^a[  
   
 @ssave[]  
 $abc[abc]  
 ^abc.save[abc]  
   
 @calendar[]  
 2001;11:<br>  
 $week_days[^date:calendar[rus](2001;11)]  
 <pre>  
 ^week_days.menu{^for[wday](0;7){^if($week_days.$wday){$week_days.$wday;&nbsp^;&nbsp^;} }<br>}  
 </pre>  
   
 @thash[]  
 $table[^table::set{id   name    age  
 1       paf     278  
 2       пиф     234  
 }]  
 $hash[^table.hash[id;^table::set[nameless]{id  
 name}]]  
 $hash.2.id $hash.2.name $hash.2.age  
   
 @tdef[]  
 $s[0]  
 if 0=^if($s){}{n}<br>  
 if def 0=^if(def $s){y}{}<br>  
 <hr>  
   
 @ford[]  
 ^for[i](0;5){$i}{($i)}  
   
 @tif[]  
 ^if[def]{y;n}  
   
 @image[]  
 $pict[^image::create(400;200)]  
 ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)  
 ^pict.arc($pict.width/2;$pict.height/2;$pict.width-10;$pict.height-10;0+10;360-10;0xff0000)  
 #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)  
 ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-10;0x0000ff)  
 ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+10;360-10;0xff0000)  
 $response:body[^pict.gif[]]  
   
   
   
 @mail2[]  
 ^mail:send[  
         $.content-type[$.value[text/plain] $.charset[windows-1251]]  
         $.from[Александр Петросян <paf@design.ru>]  
         $.to[Александр Петросян <paf@design.ru>]  
         $.subject[проверка]  
         $.body[проверка]  
 ]  
   
 @cookie[]  
 $env:HTTP_COOKIE<br>  
   
 #$cookie:переменная[test тест ТЕСТ2]  
 =$cookie:переменная=<br>  
 #$cookie:переменная2[test тест ТЕСТ3]  
 =$cookie:переменная2=<br>  
 =$cookie:CLASS.переменная2=<br>  
   
 @response[]  
 #^if($form:reload){  
         $response:refresh[$.value[0] $.url[./t.html?uri=$env:SERVER_NAME]]  
 #}  
   
 @xslt[]  
 ^xdata[]  
 $transformed[^xdoc.transform[global.xsl;$.param1[123/]]]  
 ^show_xdoc2[$transformed]  
   
 @regexp2[]  
 $s[  select]  
 $s[^s.match[^^\s*][]{!}]  
 $s  
   
 @header[]  
 $response:refresh[  
         $.value[0]  
         $.url[http://design.ru?a=^taint[123]]  
 ]  
   
 @ttablerem[]  
 $table[^table::load[a.cfg]]  
 ^table.menu{$table.a}  
   
 @tconnect[]  
 ^connect[mysql://test:test@paf/test?charset=cp1251_koi8&compress=1&timeout=1&named_pipe=1]{  
 $tables[^table::sql{show tables}]  
 #$cols[^tables.columns[]]  
 #$cols.column  
 ^tables.menu{  
         $tables.[Tables_in_test]<br>  
 }  
 }  
   
 @pcre[]  
 $s[1 2]  
 ^s.match[\s;ig]{!}  
 #^s.match[\d;ig]{!}  
   
   
 @regexp[]  
 $s[abcАБВ]  
 ^if(^s.match[б][i]){y}{n}  
   
 @mail[]  
 #$ORIGINS(1)  
 ^mail:send[  
         $.from[paf@design.ru]  
         $.to[paf@design.ru]  
         $.body[1  
           
         2  
           
           
                 3]  
 ]  
   
 @exec[]  
 $a[^file::exec[fc.exe;;a;b]]  
 $a.status|$a.stderr<hr>  
   
 @fori[][i]  
 ^for[i](1;3){... =$i= ...}  
   
 @xdata0[]  
 #$response:content-type[$.value[text/html] $.charset[windows-1251]]  
 $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>  
 <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->  
 <people>  
         <man id="1" имя="word слово">  
                 <name>P&#171^;AF        B</name>  
         </man>  
                 <man id="2">  
                         <name>ПИФ^taint[&]</name>  
                 </man>  
 </people>  
 }]  
   
 @xdata[]  
 #$response:content-type[$.value[text/html] $.charset[windows-1251]]  
 $xdoc[^xdoc::set{^process{<?xml version="1.0" encoding="windows-1251"?>  
 <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->  
 <people>  
         <man id="1" имя="word слово">  
                 <name>P&#171^;AF        B</name>  
         </man>  
                 <man id="2">  
             <name>ПИФ^taint[&]</name>  
                 </man>  
 </people>  
 }}]  
   
 @xml[]  
 ^xdata[]  
   
 ^show_xdoc2[$xdoc]<hr>  
 #^show_xnode1[$xdoc]<hr>  
 $people[^xdoc.select[*/man]]  
 #^show1[]  
 ^show_xnodes1[$people]<hr>  
 #^people.0.owner.hren[]  
   
 ^show_xnode1[^xdoc.selectSingle[*/man[2]/name];0;1]<hr>  
   
 by id:  
 ^show_xnode1[^xdoc.getElementById[1];0;1]  
 <hr>  
   
 @show1[array]  
 ^for[i](0;^array._count[]-1){  
     $x[$array.$i]  
         $x.firstChild.nodeValue:   
                 $pattributes[$x.parentNode.attributes]  
                 ^if(^pattributes._count[]){  
                         $pattributes.id.name=$pattributes.id.nodeValue  
                 }  
         <br>  
 }  
           
 @show_xnodes1[array][i]  
 ^for[i](0;^array._count[]-1){  
         ^show_xnode1[$array.$i;0;1]  
 }  
   
 @show_xnode1[x;level;single][l]  
 ^if(def $x){  
     ^for[l](0;$level-1){&nbsp^;&nbsp^;&nbsp^;&nbsp^;}  
     ^if($x.nodeType == $xnode:ELEMENT_NODE){  
         &lt^;$x.nodeName  
             $pairs[$x.attributes]  
             ^if(def $pairs){  
                 $names[^pairs._keys[]]  
                 ^names.menu{ $names.key="$pairs.[$names.key].nodeValue"}  
             }  
             &gt^;  
     }{  
         [$x.nodeType]  
     }  
       
     ^if(def $x.nodeValue){$x.nodeValue}<br>  
     ^show_xnode1[$x.firstChild]($level+1)  
     ^if(!$single){  
             ^show_xnode1[$x.nextSibling]($level)  
     }  
   
     ^if($x.nodeType == $xnode:ELEMENT_NODE){  
     ^for[l](0;$level-1){&nbsp^;&nbsp^;&nbsp^;&nbsp^;}&lt^;/$x.nodeName&gt^;<br>  
     }  
 }  
   
 @show_xdoc2[xdoc]  
 ^xdoc.save[out/save.xml;  
 #       $.encoding[utf-8]  
         $.method[xml]  
 ]  
 $file[^xdoc.file[  
         $.encoding[utf-8]  
         $.method[html]  
 ]]  
 ^file.save[text;out/save_file.html]  
 #$response:body[^xdoc.file[     $.media-type[text/paf]  ]]  
 <pre>^taint[html][^xdoc.string[  
         $.method[html]  
 #       $.encoding[utF-8]  
 #       $.omit-xml-declaration[yes]  
 #       $.standalone[no]  
 #       -$.doctype-public[-//W3C//DTD XHTML]  
 #       -$.doctype-system[/a/b/c/]  
 #       $.indent[yes]  
 #       $.media-type[text/paf]  
 ]]  
 </pre>  
   

Removed from v.1.48  
changed lines
  Added in v.1.211


E-mail: