|
|
| 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; ^; ^;} }<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«^;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«^;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){ ^; ^; ^; ^;} | |
| ^if($x.nodeType == $xnode:ELEMENT_NODE){ | |
| <^;$x.nodeName | |
| $pairs[$x.attributes] | |
| ^if(def $pairs){ | |
| $names[^pairs._keys[]] | |
| ^names.menu{ $names.key="$pairs.[$names.key].nodeValue"} | |
| } | |
| >^; | |
| }{ | |
| [$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){ ^; ^; ^; ^;}<^;/$x.nodeName>^;<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> | |