--- parser3/www/htdocs/Attic/index.html 2002/02/20 09:13:08 1.11 +++ parser3/www/htdocs/Attic/index.html 2002/09/17 16:00:46 1.146 @@ -1,63 +1,2185 @@ -@results[] -[Tue Feb 19 14:36:30 2002] string piece appends=35945, string string appends=45113 -[Tue Feb 19 14:38:35 2002] string piece appends=307971[including string append-pieces], string string appends=45116 -[Tue Feb 19 15:12:43 2002] string piece appends=36025, string string appends=45113, wcontext_result_size=1454388 -[Tue Feb 19 15:14:00 2002] string piece appends=36025, string string appends=45113, wcontext_result_size=111876[pieces count, not size. 13bytes per piece] -[Tue Feb 19 15:19:55 2002] string piece appends=36032, string string appends=45116, wcontext_result_size=9010[calls with string results] 36M total -[Tue Feb 19 16:40:09 2002] string piece appends=36025, string string appends=3535584[bytes], wcontext_result_size=1454388, total_alloc_size=12266869 - -[Tue Feb 19 17:05:07 2002] string piece appends=36025, string string appends=1903776, wcontext_result_size=783132, total_alloc_size=9922292 [no origins] -[Tue Feb 19 17:35:41 2002] string piece appends=35981, string string appends=3532334, wcontext_result_size=1452958, total_alloc_size=12263593 /stopped random -[Tue Feb 19 17:38:41 2002] string piece appends=35981, string string appends=3532334, wcontext_result_size=1452958, total_alloc_size=12153191 /а®бв бва®ЄЁ +1 ®в ЇаҐ¤ [1% -[Tue Feb 19 18:08:59 2002] string piece appends=36225, string string appends=3327900, wcontext_result_size=1373304, total_alloc_size=11813837 /Row.item size ushort, 3% -[Tue Feb 19 18:51:24 2002] string piece appends=36021, string string appends=3286488, wcontext_result_size=1354164, total_alloc_size=11758725 /don't remember :( -[Wed Feb 20 11:21:57 2002] string piece appends=36025, string string appends=3286572, wcontext_result_size=1354188, total_alloc_size=11672569 -[Wed Feb 20 11:30:11 2002] string piece appends=36025, string string appends=3286572, wcontext_result_size=1354188, total_alloc_size=11672569 -[Wed Feb 20 11:36:51 2002] string piece appends=36025, string string appends=3286572, wcontext_result_size=1354188, double_appends=45107, total_alloc_size=11672569 -[Wed Feb 20 11:37:32 2002] string piece appends=36025, string string appends=45107, wcontext_result_size=1354188, double_appends=45107, total_alloc_size=11672569 -[Wed Feb 20 11:38:07 2002] string piece appends=36025, string string appends=45107[count], wcontext_result_size=1354188, double_appends=22465[count], total_alloc_size=11672569 -[Wed Feb 20 11:39:29 2002] string piece appends=36025, string string appends=3286572[size], wcontext_result_size=1354188, double_appends=295140[size], total_alloc_size=11672569 -[Wed Feb 20 11:52:36 2002] string piece appends=36025, string string appends=3286572, wcontext_result_size=1354188, double_appends=47568[double append of non-modified-lang strings], total_alloc_size=11672569 -[Wed Feb 20 11:56:33 2002] string piece appends=36025, string string appends=3286572, wcontext_result_size=1354188, double_appends=47568, string_string_shortcut_economy=2538024[77% of all string to string appends; 21% of total_alloc], total_alloc_size=11672569 -z - - -@main[][l] -$request[^trim[$form:request;/]] -$request[^trim[/branches/moscow/tariff/;/]] -$request[^trim[/branches/regional/;/]] -$mode[^if(def $form:mode){^trim[^form:mode.lower[]]}] +@USE +/derived.p +/operators.p -^if(def $form:print){ - $stylesheetType[PRINT] +@auto[filespec] +$selffilespec[$filespec] +#$form:here +#$request:charset[UTF-8] +$request:charset[windows-1251] +$response:charset[windows-1251] +#$response:charset[UTF-8] +#$response:charset[empty] +#$response:content-type[$.value[text/html]$.charset[$response:charset]] + +#@postprocess[body] +#$body +#$result[123] + +@main[] +#$a(123) +#^a.format[%.10u] +#$result[111] +#^f[a] +#^connect[mysql://mdm:4b833ljq@db-mysql/mdm]{ +# ^int:sql{select news_id from news where news_id=-1}[ +# $.default{2} +# ]
+# ^hash::sql{bad} +# ^string:sql{select news_id from news where news_id=-1}[$.default{2}] +# ^file::load[text;^string:sql{select 'from sql server' }] +# ^string:sql{select '^^hello[]' }] $ORIGINS(1) +# ^process{ ^^h[]} +# ^process{^string:sql{select '1 +# ^^hello[]' }] } +# ^double:sql{select '2*' ^; } +#$card_sequence_expect_no(^double:sql{select 20020909131047 #card_sequence_expect_no from card_sequence}) +#^card_sequence_expect_no.format[%15.f] +#} +#^eval(2) +#^tcrashlocaljunctionsv2[] +#^tcrashlocaljunctions[] +#^tjunctions[] +#^replacetest[] +#^matchoptionpp[] +#^txdocxnodechild[] +#^tclasses[] +#$math:PI +#^b:method[] +#^main[] +#^errort[] +#^tselectNumber[] +#$result[hello] +#^invaliddate2[] +#^process2[] +#^casehashtext[] +#^subjvaltest[] +#^tableselect0[] +#^memnotest1[] +#^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[] +#^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)
+#^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[] +#^thash[] +#^tdef[] +#^ford[] +#^tif[] +#^image[] +#^response[] +#^regexp2[] +#^ttablerem[] +#^pcre[] +#^regexp[]
+#^mail[] +#^fori[] +#^tconnect[] +#^xslt[] +#^xml[] +#^header[] +#^tablehasht[] +#^datecreatestring[] +#^mssqltypes1[] +#^badthrows[] +#^xmlspace[] +#^counter[main.counter] +#^xpath2[] +#^callindirect[] +#^junctionprob[] +#^datecreatestring2[] +#^tstoredproc[] +#^tstoredproc2[] +#^forkeys[] +#^pngsize[] +#^checkList[] +#^datetest[] +#^tserge[] +#^envt[] +#^selectt[] +#^select2[] +#^selectSingle2[] +#^selectString2[] +#^selectNumber2[] +#^selectBool2[] +#^xdoccreate[] +#^xdoccreatetag[] +#^xdocload[] +#^xdocstring[] +#^xdocsave[] +#^div[] +#^datecreatestring3[] +#^tfilespec[] +#^tcrypt[] +#^cryptdocsample[] +#^tnormalize[] +#^xmltransformbyxdoc[] +#^sergestrandef[] +#^tstdin[] +#^tfind[] +#^mimet[] +#^joinlimit[] +#^tableclonelimit[] +#^transparams[] +#^sendtests[] +#^wwrapperpass[] +#^badpos[] +#^processtest[] +#^mail3[] +#^mail4[] +#^datesaving[] +#^badconstructor[] +#^calendar[] +#^monthdays(8) +#^xdoctypetest[] +#^xtabletest[] +#^staticstest[] +#^staticstest2[] +#^rbodytest[] +#^cookie[] +#^cookieexpirestest[] +#^postest[] +#^voidpostest[] +#^virtualtest[] +#^badcolumntest[] +#^delimiters[] +#^новый-split[] +#^грязные-cookie[] +#^html-почта[] +#^badswitchtest[] +#^okswitchtest[] +#^cgit[] +#^ttransformsep[] +#^calltest[] +#^xpath3[] +#^doubleliterals[] +#^newxor[] +#^mail2[] +#^exec[] +#^passpost[] +#^menudelim[] +#^fordelim[] +#^duplicatetable2hashkey[] +#^duplicatehashsqlkey[] +#^longlreplace[] +#^table2hash_onecolumn[] +#^crossopvars[] +^process{^^eval(2*2)} +
+OK + +@crossopvars[] +#^one[]
+^two[]
+ +@table2hash_onecolumn[] +$t[^table::create{a +1 +1 +}] +#^t.hash[a] +#^t.hash[a;b] +$h[^t.hash[a][$.distinct(1)]] +$h.1.a + +@longlreplace[] +$str1[ мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла мыла ] +$str2[ела] +$str[Мама $str1 раму] + +^str.replace[^table::create[nameless]{мыла $str2}] + +@duplicatehashsqlkey[] +^connect[mysql://mdm:4b833ljq@db-mysql/mdm]{ + $t[^table::sql{select * from news}] + $c[^t.columns[]] + ^c.menu{$c.column}[,] + + $h[^hash::sql{select news_type_id, name from news}[$.distinct(1)]] +} + +@duplicatetable2hashkey[] +$t[^table::create{a b +1 2 +1 3 +}] +#^t.hash[a] +#^t.hash[a;b] +^t.hash[a][$.distinct[1]] + +@menudelim[] +$t[^table::create{a +1 +2 +3 +4 +5 +}] + +^t.menu{^if($t.a<3){}{$t.a}}[,] + +@fordelim[] +^for[a](0;6){^if($a<3){}{$a}}[,] + + +@passpost[] +
+
+ +
+ +^if(def $form:text){ + $a[^file::cgi[a.pl]] + $a.text|$a.status|$a.stderr
+} + +@exec[] +#$a[^file::exec[a.cmd]] +$a[^file::cgi[a.cmd]] +$a.text|$a.status|$a.stderr
+ + +@newxor[] +^eval(1!|2 #примечание()zzz +|0x100)
+#^eval(1!||2)
+^if(1!|1){y}{n} + +#@method[$bad] + +@doubleliterals[] +#^eval(1e-10) +^eval("1e-20") + +@xpath3[] +$constr[^xdoc::create{ проверка }] +$objectData[^constr.selectSingle[/constructor-data/object]] +$objectData.nodeType
+$objectData.firstChild.nodeValue + +@calltest[] +^calltest2[string] + +@calltest2[s] +$s + +@ttransformsep[] +$input[^xdoc::load[20020909131046.xml]] +$output[^input.transform[generated.xsl]] +^output.string[] + +@okswitchtest[] +$local[local value] +^switch[1]{ + ^case[1]{1code $local} +} + +@badswitchtest[] +^switch[1]{ + ^badswitchtestcase[] +} +@badswitchtestcase[][local] +$local[local value] + ^case[1]{1code $local} + +@badjunction[] +^badj1[] +^badj2[] + +@html-почта[] +$переменная[значение] +^mail:send[ + $.from[paf@mail] + $.to[paf@mail] + $.subject[htmltest1] + $.html{тест$переменная= !} +] + + +@грязные-cookie[] +$cookie:a[&] +$cookie:a + +@новый-split[] +$abc[a.b.c] +#$table[^abc.split[.]] +#$table[^abc.split[.;l]] +#$table[^abc.split[.;v]] +$table[^abc.split[.;lv]] +^table.menu{$table.piece}[,] +
+#$table[^abc.split[.;h]] +$table[^abc.split[.;hr]] +$table.0,$table.1,$table.2
+ +@delimiters[] +$a#1[1]
+$a#1=
+ + +@badcolumntest[] +$table[^table::load[ext.cfg]] +$table.b + + +@virtualtest[] +$derived[^derived::create[derived create actual param]] +^derived.test[] + + +@voidpostest[] +$s[] +^s.pos[$nothing] + +@postest[] +$s[$nothing] +^s.pos[$nothing] + +@cookieexpirestest[] +#$cookie:exptest[1] +#$cookie:exptest[$.value[2] $.expires(+1)] +$response:xxxx[^date::now(+10)] +$response:yyy[$.value[^date::now(+20)]] +$response:yyy[$.value[vvv] $.aaaa[^date::now(+20)]] + +@rbodytest[] +$request:body= +
+ +
+ +@staticstest2[] +^$derived:derived_var=$derived:derived_var
+^$derived:a=$derived:a
+$derived:a[changed] ^$derived:a=$derived:a
+$derived:derived_var[changed] +^$derived:derived_var=$derived:derived_var
+ +@staticstest[] +$derived[^derived::create[]] +^derived.test[] +
+^$derived.a=$derived.a
+^$derived.x=$derived.x
+
+^if($derived is derived){derived is derived}{error: derived is not derived}
+^if($derived is table){derived is table}{error:derived is not table}
+
+^^eval(^$derived)=^eval($derived)
+^^if(^$derived)=^if($derived){y}{n}
+ + +@xdoctypetest[] +$xdoc[^xdoc::create[x]] +^if($xdoc is xdoc){y}{n} + +@xtabletest[] +$xtableo[^xtable::create[]] +^if($xtableo is table){y}{n} +#^xtableo.columns[] + +@monthdays[month] +$from[^date::create(2000;$month;1)] +$to[^date::create($from)] ^to.roll[month](+1) +$result($to-$from) + +@badconstructor[] +^date::now[] + +@datesaving[] +$now[^date::now[]] +$now.daylightsaving
+$now.yearday
+# +$date[^date::create(2002;1;3)] +$date.daylightsaving
+$date.yearday + +@mail4[] +^mail:send[ + $.from[paf@mail.design.ru] + $.to[paf@mail.design.ru] + $.subject[^taint[uri][москва]=2] + $.text[^taint[uri][москва]=] + $.html{link} +] +@processtest[] + $f[^file::load[text;piece.p]] ^process{$f.text} + $ORIGINS(1) + + +@badpos[] +$s[123] +^s.mid(0;2) + +@wwrapperpass[] +$h[^hash::create[]] +$h.a(1) +^my_method[^if(1){$h}] +работает. так и должно быть? + +@my_method[p] +^p._count[] + + +@tableclonelimit[] +$source[^table::create{a +aa +bb +cc}] +^source.offset(1) +#$dest[^table::create[$source]] +$dest[^table::create[$source;$.offset(2)]] +$dest[^table::create[$source;$.limit(2)]] +$dest[^table::create[$source;$.offset(1)$.limit(1)]] +$dest[^table::create[$source;$.offset(1)$.limit(2)]] +$dest[^table::create[$source;$.offset[cur]$.limit(2)]] + +^dest.menu{$dest.a}[,]
+ +@joinlimit[] +$source[^table::create{a +aa +bb +cc}] +^source.offset(2) +$dest[^table::create{a +xx +}] +#^dest.join[$source] +#^dest.join[$source;$.offset(2)] +#^dest.join[$source;$.limit(2)] +#^dest.join[$source;$.offset(1)$.limit(1)] +#^dest.join[$source;$.offset(1)$.limit(2)] +#^dest.join[$source;$.offset[cur]$.limit(1)] +^dest.join[$source;$.limit(0)] + +^dest.menu{$dest.a}[,]
+ +@cgit[] +$f[^file::cgi[showenv.cmd]] +$f.HELLO=
+$f.CONTENT-TYPE=
+$f.content-type=
+ + +@mimet[] +$f[^file::stat[a.GIF]] +$f.content-type + + +@tfind[] +^file:find[index.html] + +@tstdin[] +$f[^file::exec[test.pl;$.stdin[проверка stdin потока]]] +
$f.text
+ +@sergestrandef[] +$sQuantity[ ] +^sQuantity.int(10) + +@xmltransformbyxdoc[] +$xdoc[^xdoc::set{^process{ + + + + 1 2 + + +}}] +$sheet[^xdoc::create{ + + + + + + +defparam1 +defparam2 + + + + param1=
+ param2=
+ + test return +
+ + + test return3 + + + + + z + para1= + +
+ + +
+ + + + +
+}] + + +$xdoc[^xdoc.transform[$sheet]] +$string[^xdoc.string[$.method[html]]] +^string.save[a] +^untaint[html]{$string} + + + +@tnormalize[] +#s состоит из 1000 фрагментов +$s[^for[i](0;999){фрагмент }] +#это займет много ресурсов +^s.match[фраг][g]{перга} +#это займет меньше ресурсов +#$normalized[^s.normalize[]] +#^normalized.match[фраг][g]{перга} + +@sendtests[] +^text[] +#^html[] +#^text-n-html[] +#^file[] +#^text-n-file[] +#^text-n-html-n-file[] +#^backwardcomp[] + +@backwardcomp[] +^mail:send[ + $.from[paf] + $.to[paf] + $.body[this is text value] +] + +@text[] +^mail:send[ + $.from[paf] + $.to[paf] + $.text[ + $.value[this is text value] + ] +] + +@html[] +^mail:send[ + $.from[paf] + $.to[paf] + $.html{this is html value ^taint[<] 10} +] + +@text-n-html[] +^mail:send[ + $.from[paf] + $.to[paf] + $.text[ + $.value[this is text value] + ] + $.html[ + $.value{this is html value ^taint[<] 10} + ] +] + +@file[] +^mail:send[ + $.from[paf] + $.to[paf] + $.file[^file::load[binary;image.jpg]] +] + +@text-n-file[] +^mail:send[ + $.from[paf] + $.to[paf] + $.text[ + $.value[this is text value] + ] + $.file[^file::load[binary;image.jpg]] +] + +@text-n-html-n-file[] +^mail:send[ + $.from[paf] + $.to[paf] + $.text[ + $.value[this is text value] + ] + $.html[ + $.COntent-type[$.value[text/html]$.charset[windows-1251xx]] + $.value{this is html value ^taint[<] 10} + ] + $.file[^file::load[binary;image.jpg]] +] + + + +@md5salt[] +1234 + +@cryptdocsample[] +$users[^table::create{name password +alice *** +bob *** +}] + +$htpasswd[^table::create[nameless]{}] +^users.menu{ + ^htpasswd.append{$users.name:^math:crypt[$users.password;^$apr1^$^md5salt[]]} +} + +^htpasswd.save[nameless;.htpasswd-parser-test] + + +@tcrypt[] +#^math:crypt[123;^$apr1^$1234567890abcdef]
+^math:crypt[123;^$apr1^$]
+ +@tfilespec[] +src=$selffilespec
+dirname=^file:dirname[$selffilespec]
+basename=^file:basename[$selffilespec]
+justname=^file:justname[$selffilespec]
+justext=^file:justext[$selffilespec]
+ +@datecreatestring3[] +$new_after[^date::now(-3)] +$articles[^table::create{id title last_update +1 привет 2002-07-03}] +^articles.menu{ + $last_update[^date::create[$articles.last_update]] + $articles.title + ^if($last_update > $new_after){новая} +
+} + +@div[] +$var(5) +^var.inc(7) +^var.dec(3) +^var.div(4) +^var.mul(2) +$var + + +@xdocsave[] +$document[^xdoc::create{ + +строка1
+строка2
+
}] +^document.save[test.xml] + +@xdocstring[] +$document[^xdoc::create{ + +строка1
+строка2
+
}] +^document.string[ + $.method[html] +] + + +@xdocload[] +$document[^xdoc::load[article.xml]] +$response:body[^document.file[$.media-type[text/xml]]] + + +@xdoccreatetag[] +$document[^xdoc::create[document]] +$paraNode[^document.createElement[para]] +$dummy[^document.documentElement.appendChild[$paraNode]] +$response:body[^document.file[$.media-type[text/xml]]] + + +@xdoccreate[] +$document[^xdoc::create{ + +текст +}] +$response:body[^document.file[$.media-type[text/xml]]] + +@selectBool2[] +$d[^xdoc::set{ +}] +^if(^d.selectBool[/t/@n > 10]){ + /t/@n больше 10 }{ - $stylesheetType[HTML] + не больше } -$default_cache_time(3600) -$cache_cfg[^load[named;/_cache.cfg]] -^cache_cfg.menu{ - ^if($cache_cfg.url eq "//"){ - ^if(!def $request){ - $cache_time[$cache_cfg.time] - } + +@selectNumber2[] +$d[^xdoc::set{ +}] +^d.selectNumber[number(/t/@n)+1]
+^d.selectNumber[2*2]
+ + +@selectString2[] +$d[^xdoc::set{ +}] +# результат=привет +^d.selectString[string(t/@attr)] + + +@selectSingle2[] +$d[^xdoc::set{ +}] +# результат=один элемент "t" +$element[^d.selectSingle[t]] +# результат=2 (количество атрибутов ) +Количество атрибутов: ^element.attributes._count[]
+# результат=не существует (нет ) +^if(^d.select[x]){ + x существует +}{ + x не существует +} + +@select2[] +$d[^xdoc::set{}] +# результат: список из одного элемента "t" +$list[^d.select[t]] +# результат: 2 = количество атрибутов +^list.0.attributes._count[]
+^for[i](0;$list-1){ + $attr[$list.$i] + $attr.nodeName = $attr.nodeType
+} + + +@selectt[] +$d[^xdoc::set{}] +$list[^d.select[t]] +^list.0.attributes._count[] + +@envt[] +$f[^file::exec[showenv.cmd; + $.bad[value] + $.CGI_good[value] +]] +$f.status
+$f.stderr
+
$f.text
+ + +@tserge[] +^if(" 09 "){y} + +@datetest[] + $f[^file::stat[some.zip]] +Размер в байтах: $f.size
+Год создания: $f.cdate.year
+$now[^date::now[]] +$DAYS_CONSIDERED_NEW(3) +Статус: ^if($f.mdate >= $now-$DAYS_CONSIDERED_NEW){новый;старый} + + +@checkList[] +...^oneOf[a;a,b,c]...
+#...^oneOf[a;ax,b,c]...
+...^oneWord[word]...
+#...^oneWord[wo rd]...
+ + +@oneOf[s;list][t] выдаёт строку, если строка она есть в списке(разделенном запятыми) +$t[^list.lsplit[,]] +^if(!^t.locate[piece;$s]){^throw[user;$s;unknown]} +$result[$s] + +@oneWord[s] +^if(^s.match[\W]){^throw[user.data;$s;not word]}{$s} + +@pngsize[] +$i[^image::measure[test.png]] +^i.html[] + + +@forkeys[] +$text[^form:fields.foreach[key;val]{$key=$val +}] +^text.save[ttt.txt] +=$text= + + +@tstoredproc2[] +^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{ + ^void:sql{exec pafvoid} +} + +@tstoredproc[] +^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{ + $t[^table::sql{exec pafproc}] +# $t[^table::sql{{call pafproc}}] + $c[^t.columns[]] + ^c.menu{$c.column}[
] +} + +@datecreatestring2[] + +^datecreatestring2show[2000] +^datecreatestring2show[2000-02] +^datecreatestring2show[2000-2-03] +^datecreatestring2show[2000-02-03 15] +^datecreatestring2show[2000-02-03 15:30] +^datecreatestring2show[2000-02-03 15:30:04] +^datecreatestring2show[2000-02-03 15:30:04 hren] +^datecreatestring2show[15:30] +^datecreatestring2show[15:30:05] +^datecreatestring2show[15:30:05 hren] +
+ +@datecreatestring2show[s] +$date[^date::create[$s]] + +$s^date.sql-string[] + + + +@junctionprob[][l] +$l[123] +$a{$l} +^junctionprobnested[$a] +@junctionprobnested[p] +$p + + +@callindirecttarget[] +callindirecttarget called +@callindirect[] +$f[$callindirecttarget] +^f[] + +@xpath2[] +$xdoc[^xdoc::create{ + + + + + + +}] + +#^xdoc.string[] + +$fieldList[^xdoc.selectSingle[/doc/field-list]] +#^fieldList.childNodes._count[] +$fields[^fieldList.select[field]] +#^fields._count[] +^fields.foreach[k;node]{ + $node.nodeName
+} +@counter[filespec][f;s] +^file:lock[$filespec]{ + $f[^file::load[text;$filespec]] + $s[^eval($f.text+1)] + ^s.save[$filespec] +} +$s + +@xmlspace[] +$xdoc[^xdoc::set{^process{ + + + + 1 2 + + +}}] +$xdoc[^xdoc.transform[global.xsl]] +$string[^xdoc.string[$.method[html]]] +^string.save[a] +^untaint[html]{$string} + +@badthrows[] +#^throw[a;b;] +^throw[a;] + +@mssqltypes1[] +^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{ +# ^string:sql{select { ts '1998-05-02 01:23:56.123' }} +# ^string:sql{select CAST({ ts '1998-05-02 01:23:56.123' }AS smalldatetime)} +# ^string:sql{select CAST({ts '2002-04-28 00:00:00.000'} AS smalldatetime)} + $t[^table::sql{select a from paf}] + ^t.count[] +} + +@datecreatestring[] +$d[^date::create[2002-04-33 01:03:04]] +^d.sql-string[] + +@method[hash] +$hash.key +@mainZ[] +^method[ + $.key{code} +] + +@tablehasht[] +$t[^table::create{p +1 +3 +2 +4}] + +$h[^t.hash[p]] + +=^h._count[]= + + +@sqldefaults[] +^connect[mysql://mdm:4b833ljq@db-mysql/mdm]{ + ^int:sql{select news_id from news where news_id=-1}[$.default{2}]
+ ^string:sql{select news_id from news where news_id=-1}[$.default{2}] +} +======= +
+OK +>>>>>>> 1.50 + +@tcrashlocaljunctionsv2[] +$a[ + $b{ $c[1] } +] +$b +$c + +@tcrashlocaljunctions[] +$var[aaa] +^if(1){ +^tcrashlocaljunctions1[] +} + +$j + +@tcrashlocaljunctions1[][var] +$var[varvalue] + $j{ + $var + } +$j + +@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{}] +$xdoc.nodeName +^xdoc.selectNumber[2*2] +$xdoc:ELEMENT_NODE + + +@tclasses[] +$t[^t::create[]] +^t.method[] +
+^t.base_method[] + + +@errort[] +^xdoc::create[a] +#^throw[user;here;this] + +@tselectNumber[] +$d[^xdoc::set{}] +^d.selectString[string(d/@attr)]
+^d.selectNumber[2*2]
+^d.selectNumber[number(/d/@n)+1]
+ + +@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
} + +@transparams[] +$idoc[^xdoc::create{}] +$odoc[^idoc.transform[global.xsl; + $.param1['1'] + $.param2['2'] +]] +
^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[]
+^for[i](1;12){ + ^d.roll[month](-1) ^d.sql-string[]
+} + +@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{} 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[]
+^d.roll[day](+365*3+1) ^d.sql-string[]
+ + +@rolls[] +$d[^date::create(2002;4;4)] +^d.sql-string[]
+^for[i](1;7){ +^d.roll[day](-1) +^d.sql-string[]
+} +
+$d[^date::create(2002;3;28)] +^d.sql-string[]
+^for[i](1;7){ +^d.roll[day](+1) +^d.sql-string[]
+} +
+$d[^date::create(2002;12;3)] +^d.sql-string[]
+^for[i](1;14){ +^d.roll[day](-1) +^d.sql-string[]
+} +
+$d[^date::create(2002;10;19)] +^d.sql-string[]
+^for[i](1;14){ +^d.roll[day](+1) +^d.sql-string[]
+} + + + + + + +@exceptions1[] +^try{ + aaa + ^throw[custom1;paf;is stupid] +}{ + ^if($exception.type eq custom1){ +# $exception.handled(1) + ^throw[$exception] + type=$exception.type
+ source=$exception.source
+ file=$exception.file
+ lineno=$exception.lineno
+ comment=$exception.comment
+ } +} + +@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
+^process{$f.text} +#$c[^t.columns[]] +#^c.menu{ +#* $c.column
+#} +c:$t.c
+ +@tobjeresult[] +^table::create{a +12} + +@xmlprobs[] +$xmlDataType[^xdoc::load[program.xml]] +#
^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{}]
+^show_xdoc2[$d]
+
+@xdocset1[]
+$d[^xdoc::set{=^taint[&]=}]
+^show_xdoc2[$d]
+
+@regexp3[]
+$s[abcАБВ]
+^if(^s.match[][i]){y}{n}
+
+
+@exec2[]
+$a[^file::exec[bin/t.cmd]]
+
^taint[$a.text]
|$a.status|$a.stderr
+ + +@tlock[] +^file:lock[lockfile]{ + code +} + +@xmloutattrwithoutvalue[] +#$ORIGINS(1) +$doc[^xdoc::set{zz}] +$doc[^doc.transform[global.xsl]] +=^taint[html][^doc.string[$.method[html]]]= + + + +@precisionProblem[] +$a[123456789012345678901234567890] +$b(^a.double[]) +^b.format{%.20E} +
+^eval(2*2) + +@xpath[] +$xdoc[^xdoc::set{ +

привет

+}] +#^show_xdoc2[$xdoc] +$node[^xdoc.selectSingle[/document/block/p]] +^if(def $node){ + ^if($node is string){ + $node }{ - ^if(^request.match[^^^trim[$cache_cfg.url;/]][]){ - $cache_time[$cache_cfg.time] - } + ^if($node is hash){ + ^node._count[] + }{ + $node.nodeType + } } +#$node.firstChild.nodeValue +}{ + node not found } -$cache_key[^request:query.match[^^([^^=]*=)][]{}_${platform}_${browser}_$stylesheetType] -$cache_time(^if($env:REQUEST_METHOD eq POST){0}{^if(def $cache_time){$cache_time}{$default_cache_time}}) -# дл оладки... -# ^$cache_time=$cache_time
^$cache_key=$cache_key -#$hashData[^hashfile::open[$DB_HOME;data.dat]] -#^hashData.cache[$cache_key]($cache_time){ - ^MAIN:pSQL.server{ - $object[^engine_mdm::dataInit[$request;$stylesheetType;$mode]] - ^object.execute[] +@ttablesetlang[] +$a-tab-b[a b +1 2] + +$t[^table::set{$a-tab-b}] +=$t.a= +
+ +$t[^table::set[nameless]{^taint[$a-tab-b]}] +=$t.0= +
+ +$t[^table::set{^untaint{^taint[$a-tab-b]}}] +=$t.a= + +#^t.append{1 2} + +@mail3[] +^mail:send[ + $.from[Александр Петросян ] + $.to[Александр Петросян ] + $.subject[проверка2] + $.body[ + $.text[ + $.content-type[$.value[text/plain] $.charset[windows-1251]] + $.body[проверка^taint[uri][москва]=] + ] + $.attachment[ + $.value[^file::load[text;index.html]] + $.file-name[привет всем.html] + ] + ] +] + + +@ttime[] +$now[^date::now[]] +$now.hour:$now.minute + +@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{ +

привет

+}] +^show_xdoc2[$xdoc] +^show_xdoc2[^xdoc.transform[templates/_document.xslt]] +
+ + +@tcache2[] +^cache[$DB_HOME/keyключ](2){ + ^math:random(100) +} + +@ttaintuntaint[] +^taint[html][ + +]zz +
+^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}
+ +} +
+ + +^rem{ +$news[^table::sql{select description from news}[$.limit(3)]] +^news.menu{ + ^untaint{$news.description}
+ +} +
+} + +$tables[^table::sql{select table_name from user_tables}] +^tables.menu{ +$tables.table_name
+} + +} +
+$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{ +^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 + +@thashforeach[] +$h[ + $.a[1] + $.b[2] +] +^h.foreach[key;value]{ + $key=$value
+} + +@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} +
+ + + + +@formattest[] +$size(15.124) + +^size.format{%.2f} + +@filelist[] +$html[^file:list[.;\.html^$]] +^html.menu{ + $html.name
+} +
+ +@безнадёжна_попытка_поправить_непоправимое[] +$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 +
+^hf.foreach[key;value]{ + $key=$value
+} +
+$hash[^hf.hash[]] +=$hash.paf= +
+ +@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 +} +
+^rem{ +$hash[^counter.hash[]] +=$hash.value= +
+} + +@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
+} + + +@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
+#$doc.documentElement.nodeName
+ +^show_xnode1[$xdoc.documentElement;0;1] +
+^show_xdoc2[$xdoc] +
+ +@domxslt[] +^domdata[] +^show_xdoc2[^xdoc.transform[global.xsl;$.param1[123/]]] +
+ +@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
+ +^setdata[] +^a.sub[$b] +sub2:$a.2
+sub1:$a.1
+ +^setdata[] +$c[^a.union[$b]] +union3:$c.3
+union2:$c.2
+ +^setdata[] +$c[^a.intersection[$b]] +intersection3:$c.3
+intersection2:$c.2
+ +^setdata[] +intersects:^if(^a.intersects[$b]){y;n}
+intersects2:^if(^a.intersects[ ]){y;n}
+ + +
+ +@setdata[] +$a[$.1[a1] $.2[a2]] +$b[ $.2[b2] $.3[b3]] + + +@hash[] +$h[^hash::create[$._default[123]]] +$h.paf[not kretin] +$h.paf
+=$h.that=
+ +@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[] +$year(2002) +$month(12) +${year}-${month}:
+$week_days[^date:calendar[rus]($year;$month)] +
+^week_days.menu{^for[wday](0;6){^if($week_days.$wday){$week_days.$wday; ^; ^;} }=$week_days.week,$week_days.year=
} +
+ +@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}
+if def 0=^if(def $s){y}{}
+
+ +@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[ + $.message-id[<6615%1@parser.ru>] + $.content-type[$.value[text/plain] $.charset[windows-1251]] + $.from[Александр Петросян ] + $.to[Александр Петросян ] + $.subject[проверка проверка] + $.text[проверка] +] + +@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]] #} -#end main + +@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] +] + +@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] +
+ +@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[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] ]] +
^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]
+]]
+