--- parser3/www/htdocs/Attic/index.html 2002/01/31 12:40:35 1.4 +++ parser3/www/htdocs/Attic/index.html 2002/10/16 08:24:56 1.168 @@ -1,37 +1,2373 @@ -@main[][l] -$request[^trim[$form:request;/]] -$mode[^if(def $form:mode){^trim[^form:mode.lower[]]}] - -^if(def $form:print){ - $stylesheetType[PRINT] -}{ - $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] - } +@USE +/derived.p +/operators.p + +@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[] +#^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[] +#^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[] +#^datesaving[] +#^badconstructor[] +#^calendar[] +#^monthdays(8) +#^xdoctypetest[] +#^xtabletest[] +#^staticstest[] +#^staticstest2[] +#^rbodytest[] +#^cookie[] +#^cookieexpirestest[] +#^postest[] +#^voidpostest[] +#^badcolumntest[] +#^delimiters[] +#^новый-split[] +#^грязные-cookie[] +#^html-почта[] +#^badswitchtest[] +#^okswitchtest[] +#^cgit[] +#^ttransformsep[] +#^calltest[] +#^xpath3[] +#^doubleliterals[] +#^newxor[] +#^mail2[] +#^exec[] +#^passpost[] +#^fordelim[] +#^duplicatetable2hashkey[] +#^duplicatehashsqlkey[] +#^longlreplace[] +#^table2hash_onecolumn[] +#^crossopvars[] +#^three[] +#^badLangAfterCatch[] +#^zeroinstdin[] +#^shifts[] +#^jspace[] +#^hashselfmodification[] +#^emptyTransformResult[] +#^badxdoccreate[] +#^if(-d "CVS"){y}{n} +#^badjunctioncall[] +#^russianindex[] +#^virtualtest[] +#^xml[] +#^mail4[] +#^voidconstructorpass[] +#^$form:CLASS.a=$form:CLASS.a
+#^cookie2[] +#^menudelim[] +#^touchittest[] +#^touchittest2[] +#^opauto[] +#^trycontextt[] +#^tfor[] +#^user-foreach-test[] +#^includet[] +#^derived:includet[] +#^fortestsep[] +#^derived:inclass_process_test[] +#$derived[^derived::create[]]^derived.inclass_process_test[] +#^domorigint[] +#^junctiontest2[] +^junctionselftest[] + +@junctionselftest[] +$derived[^derived::create[]]^derived.explodejunction{$tomain[tomainOK]} +^$tomain=$tomain + +@junctiontest2[] +^if($if is junction){is junction;not junction}
+^if(def $if){defined;not defined}
+ +@domorigint[] +$xdoc[^xdoc::create[вася]] +^xdoc.firstChild.setAttribute[name;значение] +$var[$xdoc.firstChild.nodeName] +^throw[paf;$var] + + +@fortestsep[][i] +^for[i](1;3){$i}[,] + +@includet[] +^include[some.p] +^included_method[2] + +@user-foreach-test[][key;value] +^user-foreach[key;value]{$key=$value
} + +@user-foreach[key;value;code] +^for[i](1;10){ + $caller.$key($i) + $caller.$value($i*2) + $code +} + + +@tfor[][i] +^for[i](1;10){ +$i +} + +@trycontextt[] +^try{ + ^trycontexttsub[] +}{ + $exception.handled(0) +} + + +@trycontexttsub[] +^bad[] + + +@opauto[] +^reada[] + + +@rusage2[] +
+OK + +@rusage2[] +$s[$status:rusage] + +^s.tv_sec.format[%.0f].^s.tv_usec.format[%06.0f] + + +@voidconstructorpass[] +$a[$form:a] +=^form:a.int(1)= +=^a.int(1)= + + +@russianindex[] +#dir with files with russian-lang names +$where[dir] + +$dir[^file:list[$where;\.txt^$]] +^dir.menu{ + $dir.name
+} + +@badjunctioncall[] +^badjunctioncallinside{code} + +@badjunctioncallinside[code] +xx^code[] + +@badxdoccreate[] +$xdoc[^xdoc::create[вася]] +#$xdoc[^xdoc::create{вася}] + +^xdoc.firstChild.setAttribute[name;значение] +^xdoc.string[] + + +@emptyTransformResult[] +$input[^xdoc::create[docBad]] +$sheet[^xdoc::create{ + + + output + + +}] +$output[^input.transform[$sheet]] +$response:body[^output.file[]] + +@hashselfmodification[] +$hash[ + $.a[1] + $.b[2] +] +^hash.foreach[key;value]{ +# $hash.c[1] + $hash.a[1] +} + +@touchittest[][i] +$i[before] +^touchit[] +$i + +@touchittest2[] +$i[before] +^touchit[] +$i + + +@jspace[] +$a(1) +^jspace_call{^eval($a*2)} +#$a(2) +#$junction + +@jspace_call[param][a] +$a[unrelcfgdfgated] +$junction
+$junction.a(2) +$junction
+ +@shifts[] +^eval(1<<3)
+^eval(8>>2)
+#^if(1=1){y;n}
+ + +@zeroinstdin[] +#$f[^file::exec[a.pl;$.stdin[$.shit[]]]] +$f[^file::exec[a.pl;$.stdin[^file::load[binary;1z2.txt]]]] +=$f.text= +^f.save[binary;1z2.out] + +@badLangAfterCatch[] +^try{ + $a[ + тут язык сменился на pass_appended + ^throw[user;test] + и улетело с не тем языком + ] +}{ + $exception.handled(1) +} +1 2 + +@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][москва=E0_+ ]=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 +}{ + не больше +} + + +@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 +} + + +@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
} -$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 +} +
+$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 -$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[] +@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:CLASS.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::create{ + + + + 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]
+]]
+