--- parser3/src/www/htdocs/Attic/index.html 2001/04/09 11:30:46 1.127
+++ parser3/src/www/htdocs/Attic/index.html 2001/12/15 22:26:22 1.504
@@ -1,355 +1,759 @@
-@auto[]
-$html-typo[^table:set{user html comment
-<< «^; длинные user вперёд
->> »^;
-\n\n
!эти есть в таблице по умолчанию
-\n
!но т.к. заменяем, надо повторить.
-< <^; !можно этим воспользоваться,
-> >^; !и что-то сделать ДО обычных замен
-" "^; !например из << и >>
-& &^; !сделать ёлочки-кавычки.
-_  ^;
-^#AB «^; windows коды ёлочек
-^#BB »^; windows коды ёлочек
-(c) ©^;
-^#A9 ©^; windows (c)
+@main[]
+$request:charset[windows-1251]
+$response:charset[windows-1251]
+^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)
+#^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[]
+#$t[^methresult[]] ->$t
+#^terror[]
+#^ssave[]
+#^calendar[]
+#^thash[]
+#^tdef[]
+#^ford[]
+#^tif[]
+#^image[]
+#^mail2[]
+#^cookie[]
+#^response[]
+#^regexp2[]
+#^ttablerem[]
+#^pcre[]
+#^regexp[]
+#^mail[]
+#^exec[]
+#^fori[]
+#^tconnect[]
+#^xslt[]
+#^xml[]
+#^header[]
+
+OK
+
+@tupper[]
+$t[abcABCабвАБВ]
+$t
+^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
+$cache[^file:list[.;\.cache^$]]
+^file:delete[$cache_key]deleted($cache.name)
+
+
+
+@xslt2[]
+$xdoc[^xdoc::set{
+hi
}]
+#^show-xdoc2[$xdoc]
+^show-xdoc2[^xdoc.transform[templates/_document.xslt]]
+
+
-@dump[t]
-^t.menu{$n
}
-
-@func[n]
-$n
-@twop[a;b]
-($a,$b)
-
-@Zpost-process[data]
-#(
$data)
-^data.match[1][g]{X}
+@tcache2[]
+^cache[$DB_HOME/keyключ](2){
+ ^math:random(100)
+}
-@mt[s;m]
-$m ^if(^s.match[$:m;i]){matches}{does not match} $s
+@ttaintuntaint[]
+^taint[html][
-@main[]
-$e[^file:cgi[env.pl]]
-$e.text
-
-
-^rem{^mail:send[
- $to[paf@design.ru]
- $from[paf@design.ru]
- $body[
- $1[
- $content-type[
- $value[text/plain]
- $charset[windows-1251]
- ]
- $body[привет, PAF.
+]zz
+
+^untaint[html]{1^taint[ ]2 3}
-sincerily yours,
-PAF
-]
- ]
- $attach[
- $value[^file:load[test.zip]]
- $type[uue]
- $file-name[retest.zip]
- ]
- ]
-]
+
+@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}
+
+}
+
+
+
+^rem{
+$news[^table::sql{select description from news}[$.limit(3)]]
+^news.menu{
+ ^untaint{$news.description}
+
+}
+
}
-^rem{^mail:send[
- $content-type[
- $value[text/plain]
- $charset[windows-1251]
- ]
- $to[paf@design.ru]
- $from[paf@design.ru]
- $body[привет, PAF.
+$tables[^table::sql{select table_name from user_tables}]
+^tables.menu{
+$tables.table_name
+}
+
+}
+
+$env:PATH
-sincerily yours,
-PAF
+@badconstructors[]
+$bred[^string::length[]]
+$bred[^response::clear[]]
+$bred[^int::int[]]
+
+
+@xloadwrongtable[]
+$constr[^xdoc::load[wrongtable.xml]]
+
+@xsetwrongtable[]
+$constr[^xdoc::set{
+^untaint[as-is]{$constructor}}]
+
+
+@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]]=
+=$cookie:clientType=
+
+
+@tableset[]
+$a[^table::set{a
+1
+2}]
+^eval(100\$a)
+
+
+
+@zzz[]
+
+
+$constructor[
+
+
]
+
+$constr[^xdoc::set{
+^untaint[as-is]{$constructor}}]
+
+$children[$constr.documentElement.childNodes]
+^if($children){
+^for[i](1;^children._count[]){
+ $node[$children.$i]
+ $node.nodeName
+}
+}
+
+
+@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
-^rem{^mail:send[
- $to[paf@design.ru]
- $from[paf@design.ru]
- $body[
- $2[
- $content-type[$value[message/rfc822] $name[letter.eml]]
- $body[to: paul
-from: paf
-subject: 2
-
-2.body
- ]
- ]
- $1[
- $to[paul]
- $from[paf]
- $subject[1]
- $content-type[text/plain]
- $body[image]
- ]
- ]
-]}
-
-
-^^table:dir[/]:
-$d[^table:dir[/]]
-^d.menu{$name;
}
-
-
-^^table:dir[/;html^$]
-$d[^table:dir[/;html^$]]
-^d.menu{$name;
}
-
+@thashforeach[]
+$h[
+ $.a[1]
+ $.b[2]
+]
+^h.foreach[key;value]{
+ $key=$value
+}
-^connect[$SQL.connect-string]{
- $shit[^taint[our's]]
-# $paf[^table:sql{insert into paf (name, age) values ('$shit', ^random:generate(10000))}]
- $paf[^table:sql{select * from paf order by id desc}(5)]
- $paf{
- ^empty{query result is empty}{
-
- | id | name | age |
- ^menu{| $id | $name | $age |
}
-
- }}
-}
-
-
-
-$with-cr[^table:set{a b
-^taint[<1
-2>] 3
-}]
-"$with-cr.a"
-
-^if(def $form:s){
- $form:s
- ^form:s.match[!][g]{!}
-
-}
-
-$r[1223]
-^^"$r".match[2][]{(^$match)}=^r.match[2][]{($match)}
-^^"$r".match[2][i]{(^$match)}=^r.match[2][i]{($match)}
-^^"$r".match[2][g]{(^$match)}=^r.match[2][g]{($match)}
-^^"$r".match[2+][g]{(^$match)}=^r.match[2+][g]{($match)}
-
-$s[abcЯ]
-$sm[^s.match[(.)][g]]
-^^"$s".match[(.)][g]:
-^sm.menu{
- ^line[]:
- ^$pre-match=$pre-match
- ^$match=$match
- ^$post-match=$post-match
- ^$1=$1
-}
-
-$sm[^s.match[(.)][]]
-^^"$s".match[(.)][]:
-^sm.menu{
- ^line[]:
- ^$pre-match=$pre-match
- ^$match=$match
- ^$post-match=$post-match
- ^$1=$1
-}
-
-^mt[$s;я]
-^mt[$s;Я]
-^mt[$s;b]
-^mt[$s;^^b]
-^mt[$s;^^a]
-^mt[$s;x]
-
-
-
-$dest[^table:set[nameless]{
-$form:d11 d12 d13
-d21 d22 d23
-}]
-$src[^table:set{a b c d
+@thashdelete[]
+$h[$.a[1] $.b[2]]
+was:
+count=^h._count[]
+b='$h.b'
+
+^h.delete[b]
+
+now:
+count=^h._count[]
+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}
+
-
-$свойства_когда_пьян[
- $цвет_глаз[красный]
+
+@mail2[]
+^mail:send[
+ $.content-type[$.value[text/plain] $.charset[windows-1251]]
+ $.from[Александр Петросян ]
+ $.to[Александр Петросян ]
+ $.subject[проверка]
+ $.body[проверка]
]
-$вася[
- $свойства[$свойства_когда_пьян]
+
+@cookie[]
+$env:HTTP_COOKIE
+
+#$cookie:переменная[test тест ТЕСТ2]
+=$cookie:переменная=
+#$cookie:переменная2[test тест ТЕСТ3]
+=$cookie:переменная2=
+=$cookie:CLASS.переменная2=
+
+@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]
+}
+}
+
+@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
+
+@fori[][i]
+^for[i](1;3){... =$i= ...}
+
+@xdata0[]
+#$response:content-type[$.value[text/html] $.charset[windows-1251]]
+$xdoc[^xdoc::set{
+
+
+
+ P«^;AF B
+
+
+ ПИФ^taint[&]
+
+
+}]
+
+@xdata[]
+#$response:content-type[$.value[text/html] $.charset[windows-1251]]
+$xdoc[^xdoc::set{^process{
+
+
+
+ P«^;AF B
+
+
+ ПИФ^taint[&]
+
+
+}}]
+
+@xml[]
+^xdata[]
+
+^show-xdoc2[$xdoc]
+#^show-xnode1[$xdoc]
+$people[^xdoc.select[*/man]]
+#^show1[]
+^show-xnodes1[$people]
+#^people.0.owner.hren[]
+
+^show-xnode1[^xdoc.selectSingle[*/man[2]/name];0;1]
+
+by id:
+^show-xnode1[^xdoc.getElementById[1];0;1]
-^if($form:photo){
-
- ^$form:photo.name='$form:photo.name'
- ^$form:photo.size='$form:photo.size'
- ^$form:photo.text='$form:photo.text'
- ^form:photo.save[paf.txt]
-
-}
-
-#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]
-
-
-ERROR:
-^if(def $source){$origin '$source'}
-${comment}.
-^if(def $type){type=$type}
-^if(def $code){code=$code}
-
-@auto_test[]
-^BASE.auto_test[]
-${request:uri}!
\ No newline at end of file
+
+@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
+ }
+
+}
+
+@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}
+ ^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>^;
+ }
+}
+
+@show-xdoc2[xdoc]
+^xdoc.save[out/save.xml;
+# $.encoding[windows-1251]
+ $.method[xml]
+]
+$file[^xdoc.file[
+# $.encoding[windows-1251]
+ $.method[html]
+]]
+^file.save[text;out/save_file.html]
+#$response:body[^xdoc.file[ $.media-type[text/paf] ]]
+^taint[html][^xdoc.string[
+# $.method[html]
+# $.version[1.0]
+# $.encoding[utf-8]
+# $.omit-xml-declaration[yes]
+# $.standalone[yes]
+# $.doctype-public[-//W3C//DTD XHTML]
+# $.doctype-system[/a/b/c/]
+# $.indent[no]
+ $.media-type[text/paf]
+]]
+
+