|
|
| version 1.93, 2001/04/03 14:39:05 | version 1.435, 2001/10/26 15:55:20 |
|---|---|
| Line 1 | Line 1 |
| @auto[] | @main[] |
| !!$html-typo[^table:set{user html comment | #^безнадёжна_попытка_поправить_непоправимое[] |
| << «^; длинные user вперёд | #^tcache[] |
| >> »^; | #^thashfileexp[] |
| \n\n <p> !эти есть в таблице по умолчанию | #^tcounter[] |
| \n <br> !но т.к. заменяем, надо повторить. | #^tablehash[] |
| < <^; !можно этим воспользоваться, | #^hashfile[] |
| > >^; !и что-то сделать ДО обычных замен | #^formclass[] |
| " "^; !например из << и >> | #^hren[] |
| & &^; !сделать ёлочки-кавычки. | ^domedit[] |
| _  ^; | #^domxslt[] |
| ^#AB «^; windows коды ёлочек | #^lsplit2[] |
| ^#BB »^; windows коды ёлочек | #^faceesize[] |
| (c) ©^; | #^imageresize[] |
| ^#A9 ©^; windows (c) | #^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[] | |
| OK | |
| @безнадёжна_попытка_поправить_непоправимое[] | |
| $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[cache]] | |
| ^code.cache[key](2){ | |
| ^math:random(100) | |
| # ^code.delete[] | |
| } | |
| @dump[t] | |
| ^t.menu{$n<BR>} | |
| <HR> | |
| @func[n] | |
| $n | |
| @twop[a;b] | |
| ($a,$b) | |
| @post-process[data] | @thashfileexp[] |
| (<BR>$data)<BR> | $hf[^hashfile::open[hashfile]] |
| $hf.paf[$.value[крут] $.expires(3)] | |
| paf=$hf.paf | |
| <hr> | |
| $hash[^hf.hash[]] | |
| =$hash.paf= | |
| <hr> | |
| @mt[s;m] | @tcounter[] |
| $m ^if(^s.match{$:m}[i]){matches}{do not match} $s<BR> | ^tcounterone[$DB_HOME] |
| other root: | |
| ^tcounterone[${DB_HOME}2] | |
| again, first: | |
| ^tcounterone[$DB_HOME] | |
| @tcounterone[DB_HOME] | |
| #^hashfile:clear[$DB_HOME;counter] | |
| $counter[^hashfile::open[$DB_HOME;counter]] | |
| ^counter.transaction{ | |
| # $counter.value(10) | |
| $counter.value($counter.value+1) | |
| # ^counter.delete[value] | |
| $counter.value | |
| } | |
| <hr> | |
| ^rem{ | |
| $hash[^counter.hash[]] | |
| =$hash.value= | |
| <hr> | |
| } | |
| @main[] | @tablehash[] |
| $s[abcЯ] | $productList[^table::set{id name |
| $sm[^s.match{(.)}[g]] | 1 носки |
| ^^"$s".match{(.)}[g]:<BR> | 2 валенки |
| ^sm.menu{ | 3 ушанка |
| ^line[]:<BR> | |
| ^$pre-match=$pre-match<BR> | |
| ^$match=$match<BR> | |
| ^$post-match=$post-match<BR> | |
| ^$1=$1<BR> | |
| } | |
| <HR> | |
| $sm[^s.match{(.)}[]] | |
| ^^"$s".match{(.)}[]:<BR> | |
| ^sm.menu{ | |
| ^line[]:<BR> | |
| ^$pre-match=$pre-match<BR> | |
| ^$match=$match<BR> | |
| ^$post-match=$post-match<BR> | |
| ^$1=$1<BR> | |
| } | |
| <HR> | |
| ^mt[$s;я] | |
| ^mt[$s;b] | |
| ^mt[$s;^^b] | |
| ^mt[$s;^^a] | |
| ^mt[$s;x] | |
| <HR> | |
| $dest[^table:set[nameless]{ | |
| $form:d11 d12 d13 | |
| d21 d22 d23 | |
| }] | }] |
| $src[^table:set{a b c d | |
| s1 s2 s3 s4 | #скажем, у первого дилера |
| }] | $firstPriceList[^table::set{id price |
| 1:<BR>^dest.menu{$0!$1!$2!$3!<BR>} | 1 0.3 |
| ^dest.join[$src] | 3 1000 |
| 2:<BR>^dest.menu{$0!$1!$2!$3!<BR>} | |
| <HR> | |
| $dest[^table:set{a b c | |
| d11 d12 d13 | |
| d21 d22 d23 | |
| }] | }] |
| $src[^table:set{a b c d | |
| s1 s2 s3 s4 | $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{петросян ^;co}]] | |
| ^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^; ! | |
| }] | }] |
| ^dest.join[$src] | |
| ^dest.menu{$a!$b!$c!<BR>} | |
| <HR> | |
| ^^random:generate(10)=^random:generate(10)<BR> | |
| @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> | |
| <HR> | @setdata[] |
| $t[^table:load[/test.cfg]] | $a[$.1[a1] $.2[a2]] |
| $t{ | $b[ $.2[b2] $.3[b3]] |
| ^menu{$a!$b!$c<BR>} | |
| <HR> | |
| ^append{x y z} | @hash[] |
| ^menu{$a!$b!$c<BR>} | $h[^hash::create[$._default[123]]] |
| <HR> | $h.paf[not kretin] |
| ^flip[] | $h.paf<br> |
| ^menu{$0!$1!$2!$3<BR>} | =$h.that=<br> |
| <HR> | |
| } | @methresult[] |
| $result[^table::set{1}] | |
| $a[vasya,fedya,kolya] | |
| ^^"$a".lsplit[,]=$as[^a.lsplit[,]]$as.0|$as.1|$as.2|$as.3<BR> | @terror[] |
| ^^"$a".rsplit[,]=$as[^a.rsplit[,]]$as.0|$as.1|$as.2|$as.3<BR> | ^error[method z must be called with z] |
| ^^a.pos(sy]="^a.pos[sy]"<BR> | |
| ^^a.pos[zsy]="^a.pos[zsy]"<BR> | @syntax1[] |
| ^^a.left(3)="^a.left(3)"<BR> | #^a[^b] |
| ^^a.right(3)="^a.right(3)"<BR> | |
| ^^a.mid(1;3)="^a.mid(1;3)"<BR> | @syntax2[] |
| <HR> | #^a[ |
| ^^twop[a;]=^twop[a;]<BR> | |
| ^$request:browser.type=$request:browser.type<BR> | @ssave[] |
| ^$request:browser.version=$request:browser.version<BR> | $abc[abc] |
| ^abc.save[abc] | |
| $tf[^file:load[test.zip;abc.zip;image/gif]] | |
| #$response:body[$tf] | @calendar[] |
| 2001;11:<br> | |
| ^$tf.name=$tf.name<BR> | $week_days[^date:calendar[rus](2001;11)] |
| ^$tf.size=$tf.size<BR> | <pre> |
| ^$tf.mime-type=$tf.mime-type<BR> | ^week_days.menu{^for[wday](0;7){^if($week_days.$wday){$week_days.$wday; ^; ^;} }<br>} |
| ^$tf.text:<BR> | </pre> |
| $tf.text<HR> | |
| <HR> | @thash[] |
| ^file:find[test.cfg]<BR> | $table[^table::set{id name age |
| ^file:find[tes.cfg]{not found}<BR> | 1 paf 278 |
| <HR> | 2 пиф 234 |
| $t[^table:set{n | |
| 3 | |
| 01.3 | |
| 1.2 | |
| 2 | |
| }] | }] |
| $t{^locate[n;2z]^found{$n}{not found}}<BR> | $hash[^table.hash[id;^table::set[nameless]{id |
| $t{^locate[n;3]^found{found:$n}{not found}}<BR> | name}]] |
| ^$t:<BR> | $hash.2.id $hash.2.name $hash.2.age |
| ^dump[$t] | |
| ^t.sort($n) | @tdef[] |
| ^^t.sort(^$n):<BR> | $s[0] |
| ^dump[$t] | if 0=^if($s){}{n}<br> |
| ^t.sort{^:func($n)} | if def 0=^if(def $s){y}{}<br> |
| ^^t.sort{^^:func(^$n)}:<BR> | <hr> |
| ^dump[$t] | |
| ^t.sort{$n} | @ford[] |
| ^^t.sort{^$n}:<BR> | ^for[i](0;5){$i}{($i)} |
| ^dump[$t] | |
| ^t.sort{$n}[desc] | @tif[] |
| ^^t.sort{^$n}[desc]:<BR> | ^if[def]{y;n} |
| ^dump[$t] | |
| <HR> | @image[] |
| $pict[^image::create(400;200)] | |
| ^if(-f index.html){y}{n}<BR> | ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000) |
| ^taint[html-typo;не знаю | ^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[]] | |
| (c) by Я | |
| ]<HR> | |
| $t[^table:load[/test.cfg]] | |
| ^process[@b[] | @mail2[] |
| f | ^mail:send[ |
| $.content-type[$.value[text/plain] $.charset[windows-1251]] | |
| $.from[Александр Петросян <paf@design.ru>] | |
| $.to[Александр Петросян <paf@design.ru>] | |
| $.subject[проверка] | |
| $.body[проверка] | |
| ] | ] |
| ^b[]<BR> | |
| ^$t.a=$t.a<BR> | @cookie[] |
| ^t.offset[2] | $env:HTTP_COOKIE<br> |
| #$r[^t.record[]] | |
| #^$r.a=$r.a<BR> | |
| ^$request:uri=$request:uri<BR> | |
| ^$env:PATH_INFO=$env:PATH_INFO<BR> | |
| ^$env:REMOTE_ADDR=$env:REMOTE_ADDR<BR> | |
| ^rem{ | #$cookie:переменная[test тест ТЕСТ2] |
| $response:body[] | =$cookie:переменная=<br> |
| $response:location[http://parser3/123] | #$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> | |
| } | |
| } | |
| <HR> | @pcre[] |
| ^^auto_test[]:<BR> | $s[1 2] |
| <ol> | ^s.match[\s;ig]{!} |
| ^auto_test[] | #^s.match[\d;ig]{!} |
| </ol> | |
| <HR> | |
| @regexp[] | |
| ^${cookie:вот}=${cookie:вот}?<BR> | $s[abcАБВ] |
| ^$request:query=$request:query<BR> | ^if(^s.match[б][i]){y}{n} |
| ^$request:uri=$request:uri<BR> | |
| @mail[] | |
| <form method=post> | #$ORIGINS(1) |
| <table border=1 width=250><tr><td>$form:name</td></tr></table> | ^mail:send[ |
| <textarea name=name rows=5 cols=40>^untaint[html]{^default[$form:name;не знаю]}</textarea><BR> | $.from[paf@design.ru] |
| <input type=submit> | $.to[paf@design.ru] |
| </form> | $.body[1 |
| <HR> | 2 |
| $свойства_когда_пьян[ | |
| $цвет_глаз[красный] | |
| 3] | |
| ] | ] |
| $вася[ | |
| $свойства[$свойства_когда_пьян] | @exec[] |
| $a[^file::exec[fc.exe;;a;b]] | |
| $a.status|$a.stderr<hr> | |
| @fori[][i] | |
| ^for[i](1;3){... =$i= ...} | |
| @xdata[] | |
| #$response:content-type[$.value[text/html] $.charset[windows-1251]] | |
| $xdoc[^xdoc::load[input.xml]] | |
| @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[save.xml; | |
| # $.encoding[windows-1251] | |
| $.method[xml] | |
| ] | ] |
| $file[^xdoc.file[ | |
| # $.encoding[windows-1251] | |
| $.method[html] | |
| ]] | |
| ^file.save[text;save_file.html] | |
| <pre>taint[^xdoc.string[]] | |
| # $.encoding[windows-1251] | |
| # $.method[html] | |
| #]] | |
| </pre> | |
| $кусок_имени_поля[ства] | |
| ^$кусок_имени_поля=$кусок_имени_поля<BR> | |
| ^$вася.свой^$кусок_имени_поля.цвет_глаз=$вася.свой$кусок_имени_поля.цвет_глаз | |
| <HR> | |
| <form method=post enctype=multipart/form-data> | |
| <input name=photo type=file> | |
| <input type=submit> | |
| </form> | |
| <hr> | |
| ^if($form:photo){ | |
| <pre> | |
| ^$form:photo.name='$form:photo.name' | |
| ^$form:photo.size='$form:photo.size' | |
| ^$form:photo.text='$form:photo.text' | |
| ^form:photo.save[paf.txt] | |
| </pre> | |
| } | |
| #todo proper! untaint $response:refresh[$value[2] $content[url=http://design.ru]] | |
| @default[test;def] | |
| $result[^if(^test.length[]){$test}{$def}] | |
| @exception[origin;source;comment;type;code] | |
| <body bgcolor=black> | |
| <font color=white> | |
| ERROR: | |
| ^if(def $source){$origin '$source'} | |
| ${comment}. | |
| ^if(def $type){type=$type} | |
| ^if(def $code){code=$code} | |
| @auto_test[] | |
| ^BASE.auto_test[] | |
| <li>${request:uri}! | |