+^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)
+# ^cache(0)
^math:random(100)
}
@@ -226,12 +915,13 @@ $t[^table::create{a b
@execlangs[]
$f[^file::exec[test.pl]]
+err:$f.stderr
^process{$f.text}
#$c[^t.columns[]]
#^c.menu{
#* $c.column
#}
-=$t.c=
+c:$t.c
@tobjeresult[]
^table::create{a