@USE
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[]
^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
@txdocxnodechild[]
$xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?><d/>}]
$xdoc.nodeName
^xdoc.selectNumber[2*2]
@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>
E-mail: