Annotation of parser3/www/htdocs/index.html, revision 1.37
1.15 paf 1: #@USE
2: #z/t.p
3:
4: @autoz[]
5: $request:charset[windows-1251]
6: $response:charset[windows-1251]
7: $response:content-type[$.value[text/html]$.charset[$response:charset]]
8:
1.37 ! paf 9: @postprocess[body]
! 10: <b>$body</b>
! 11: $result[123]
! 12:
1.15 paf 13: @main[]
1.36 paf 14: #^invaliddate2[]
15: #^process2[]
16: #^casehashtext[]
1.35 paf 17: #^subjvaltest[]
18: #^tableselect0[]
1.34 paf 19: #^memnotest1[]
1.33 paf 20: #^transparams[]
1.32 paf 21: #^voidparams[]
1.31 paf 22: #^rolls2[]
1.30 paf 23: #^cacheexpireschanging[]
1.29 paf 24: #^cacheexpiresfixed[]
25: #^dateoffsets[]
26: #^exceptionTypes[]
1.28 paf 27: #^roll2[]
1.27 paf 28: #^rolls[]
1.25 paf 29: #^exceptions1[]
1.22 paf 30: #^locate_by_expr[]
1.18 paf 31: #^method_junction_params{...}
1.17 paf 32: #^verifyCookie[paf]
1.37 ! paf 33: #^execlangs[]
1.16 paf 34: #$t[^tobjeresult[]]$t.a
35: #^xmlprobs[]
1.15 paf 36: #^doubleprobs[]
37: #^math:random(-10)
38: #^divnamestop[]
39: #^arrayclone[]
40: #^operator_tricks[]
41: #^xoutputrusattr[]
42: #^xdocset1[]
43: #^regexp3[]
44: #^exec2[]
45: #^tlock[]
46: #^xmloutattrwithoutvalue[]
47: #^precisionProblem[]
48: #^xpath[]
49: #^ttablesetlang[]
50: #^mail3[]
51: #^ttime[]
52: #^tupper[]
53: #^treplace[]
54: #^xslt2[]
55: #^tcache2[]
56: #$ORIGINS(1)
57: #$t[^table::set{a b} ^table::set{c d}]
58: #^ttaintuntaint[]
59: #^tappend2[]
60: #^badvsnprintf[]
61: #^badoracequoting[]
62: #^badconstructors[]
63: #^xloadwrongtable[]
64: #^xsetwrongtable[]
65: #^if($form:test){y}{n}
66: #^tablecolumnerror[]
67: #^roll[]
68: #^cookie2[]
69: #^tableset[]
70: #^math:PI.format{%.30f}
71: #^xchildren[]
72: #^thashforeach3[]
73: #^thashforeach2[]
74: #^thashforeach[]
75: #^thashdelete[]
76: #^connect[mysql://user:pass@cd.rinet.ru/db]{^void:sql{z} }
77: #^tappend[]
78: #^sappend[]
79: #^eval(10\3)<br>
80: #^tform[]
81: #^formattest[]
82: #^filelist[]
83: #^connect[mysql://user:pass@host]{ }
84: #^безнадёжна_попытка_поправить_непоправимое[]
85: #^tcache[]
86: #^thashfileexp[]
87: #^tcounter[]
88: #^tablehash[]
89: #j^hashfile[]
90: #^formclass[]
91: #^hren[]
92: #^domedit[]
93: #^domxslt[]
94: #^lsplit2[]
95: #^faceesize[]
96: #^imageresize[]
97: #^ifassignhash[]
98: #^tintdefault[]
99: #$response:status[404]
100: #^ifpasshash[]
101: #^movedir[]
102: #^replace[]
103: #^set[]
104: #^hash[]<hr>
105: #$t[^methresult[]] ->$t
106: #^terror[]
107: #^ssave[]
108: #^calendar[]
109: #^thash[]
110: #^tdef[]
111: #^ford[]
112: #^tif[]
113: #^image[]
114: #^mail2[]
115: #^cookie[]
116: #^response[]
117: #^regexp2[]
118: #^ttablerem[]
119: #^pcre[]
120: #^regexp[]<hr>
121: #^mail[]
122: #^exec[]
123: #^fori[]
124: #^tconnect[]
125: #^xslt[]
126: #^xml[]
127: #^header[]
128: <hr>
129: OK
1.34 paf 130:
1.36 paf 131: @invaliddate2[]
132: $d[^date::create(1018946575/60/60)] ^d.sql-string[]
133:
134: @process2[]
135: ^^process{
136: ^process{
137: ^$a[^^if(0){^$.k[y]}{^$.k[^^hren[]n]}] ^$a.k
138: }
139: }
140:
1.35 paf 141: @casehashtext[]
142: $tt[1]
143: $tmp[
144: ^switch[$tt]{
145: ^case[1]{
146: $.aaa[123]
147: }
148: ^case[DEFAULT]{
149: $.bbb[456]
150: }
151: }
1.36 paf 152: shit!
1.35 paf 153: ]
1.36 paf 154: #$tmp
1.35 paf 155: $tmp.aaa
156:
157: @subjvaltest[]
158: $a12[val]
159: $b[12]
160: $a$b
161:
1.34 paf 162: @tableselect0[]
163: $person[^table::create{name height
164: paf 1.77
165: шохин 2.07
166: moko 1.77
167: }]
168: $nottoohigh[^person.select($person.height<2)]
169: ^nottoohigh.menu{$nottoohigh.name<br>}
1.32 paf 170:
171: @transparams[]
172: $idoc[^xdoc::create{<?xml version="1.0" ?><doc/>}]
173: $odoc[^idoc.transform[global.xsl;
174: $.param1['1']
175: $.param2['2']
176: ]]
177: <pre>^taint[^odoc.string[$.method[html]]]
178:
179: @memnotest1[]
180: ^for[i](0;4000){
181:
182: $xxxx[$i]
183: $xxxx
184:
185: }
186:
187: @memnotest1notes[]
188: одна итерация цикла:
189: [Mon Apr 8 20:12:02 2002] execution-------------------------|
1.35 paf 190: '469641+=28 wcodeframe -> 0 !optimize[3]''469669+=49 string от {} -> 0 optimize[3]'
1.32 paf 191: [Mon Apr 8 20:12:02 2002] 12:STRING__WRITE
192: [Mon Apr 8 20:12:02 2002] "|| "
193: [Mon Apr 8 20:12:02 2002] 12:WITH_ROOT
194: [Mon Apr 8 20:12:02 2002] 13:VALUE
195: [Mon Apr 8 20:12:02 2002] "xxxx" string
1.35 paf 196: [Mon Apr 8 20:12:02 2002] 14:CREATE_EWPOOL'469377+=24 wcodeframe -> 0 !optimize[1]''469401+=49 string -> 41 !optimize[7]'
1.32 paf 197: [Mon Apr 8 20:12:02 2002] 16:WITH_READ
198: [Mon Apr 8 20:12:02 2002] 17:VALUE
199: [Mon Apr 8 20:12:02 2002] "i" string
200: [Mon Apr 8 20:12:02 2002] 18:GET_ELEMENT
1.35 paf 201: [Mon Apr 8 20:12:02 2002] 17:WRITE_VALUE'469452+=40 MAX_NUMBER -> !~2 actual digits''469492+=49 -> 41 !'
202: [Mon Apr 8 20:12:02 2002] 16:REDUCE_EWPOOL'469541+=24 VString -> 0 optimize[5]'
1.32 paf 203: [Mon Apr 8 20:12:02 2002] 15:CONSTRUCT_VALUE
204: [Mon Apr 8 20:12:02 2002] 12:STRING__WRITE
205: [Mon Apr 8 20:12:02 2002] "| "
206: [Mon Apr 8 20:12:02 2002] 12:WITH_READ
207: [Mon Apr 8 20:12:02 2002] 13:VALUE
208: [Mon Apr 8 20:12:02 2002] "xxxx" string
209: [Mon Apr 8 20:12:02 2002] 14:GET_ELEMENT
210: [Mon Apr 8 20:12:02 2002] 13:WRITE_VALUE'469573+=41 string expand nothing for now'
211: [Mon Apr 8 20:12:02 2002] 12:STRING__WRITE
1.35 paf 212: [Mon Apr 8 20:12:02 2002] "||"'469617+=24 VString -> 0 !optimize[6]'
1.32 paf 213: [Mon Apr 8 20:12:02 2002] <-ja returned
214: [Mon Apr 8 20:12:02 2002] ja->
215:
216: 201/328=0.612804878049 %%optimized
217:
218: 1.
219: CREATE_*POOL
220: сделать
221: *POOL_POOLED+CODE
222: где
223: wwrapper
224: и(возможно) wcodeframe
225: +string
226: стековая переменная
227:
228: 2.
229: избавиться от обёртки при возврате результата process [см. тело _for]
230:
231: 3.
232: сделать callback для process, чтобы вынести invariants из _for & co.
233:
234: 4.
235: @todo склеить get_element и write_value (при вставлении? write_value)
236:
237: 5.
238: reduce_*pool -> вариант получить именно string, без VString обёртки [часто
239: обёртка сразу выбрасывается = не нужна]
240:
241: 6.
242: process вариант получить именно string, без VString обёртки [часто обёртка
243: сразу выбрасывается = не нужна]
244:
245: 7.
246: string head, убить 8 байт неправильной link
1.31 paf 247:
248: @voidparams[]
249: ^voidparamsm[$form:field]
250:
251: @voidparamsm[p]
252: ^p.int(123)
1.29 paf 253:
1.30 paf 254: @rolls2[]
255: $now[^date::now[]]
256: $d[^date::create($now.year;$now.month)] ^d.sql-string[]<br>
257: ^for[i](1;12){
258: ^d.roll[month](-1) ^d.sql-string[]<br>
259: }
260:
1.29 paf 261: @cacheexpireschanging[]
262: ^cache[$DB_HOME/keyключ][^date::now(+1)]{ ^rem{1 day}
263: ^cache[^date::now(+4/24/60/60)]
264: # ^cache(2)
1.30 paf 265: # ^cache(0)
1.29 paf 266: ^math:random(100)
267: }
268:
269:
270:
271: @cacheexpiresfixed[]
272: ^cache[$DB_HOME/keyключ][^date::now(+2/24/60/60)]{
273: ^math:random(100)
274: }
275:
276: @dateoffsets[]
277: $d[^date::create(^date::now[]+1/24/60)]
278: #$d[^date::now(+1/24/60)]
279: ^d.sql-string[]
280: #$d
1.26 paf 281:
1.28 paf 282: @exceptionTypes[]
283: # parser.compile ^test[} компиляция (непарная скобка, ...)
284: # parser.runtime ^if(0). параметры (больше/меньше, чем нужно, не тех типов, ...)
285: # number.zerodivision ^eval(1/0) ^eval(1%0)
286: # number.format ^eval(abc*5)
287: # file.missing ^file:delete[delme] not found
288: # file.access ^table::load[.] no rights
289: # image.format ^image::measure[index.html] not gif/jpg
290: # sql.connect ^connect[mysql://baduser:pass@host/db]{} not found/timeout
291: # sql.execute ^connect[mysql://okuser:pass@host/db]{^void:sql{select bad}} syntax error
292: # xml ^xdoc::create{<forgot?>} any error in xml/xslt libs
293: # smtp.connect not found/timeout
294: # smtp.execute communication error
295:
1.26 paf 296: @roll2[]
297: $d[^date::create(2002;4;2;2;2;3)] ^d.sql-string[]<br>
1.27 paf 298: ^d.roll[day](+365*3+1) ^d.sql-string[]<br>
1.26 paf 299:
1.25 paf 300:
301: @rolls[]
302: $d[^date::create(2002;4;4)]
303: ^d.sql-string[]<br>
304: ^for[i](1;7){
305: ^d.roll[day](-1)
306: ^d.sql-string[]<br>
307: }
308: <hr>
309: $d[^date::create(2002;3;28)]
310: ^d.sql-string[]<br>
311: ^for[i](1;7){
312: ^d.roll[day](+1)
313: ^d.sql-string[]<br>
314: }
315: <hr>
316: $d[^date::create(2002;12;3)]
317: ^d.sql-string[]<br>
318: ^for[i](1;14){
319: ^d.roll[day](-1)
320: ^d.sql-string[]<br>
321: }
322: <hr>
323: $d[^date::create(2002;10;19)]
324: ^d.sql-string[]<br>
325: ^for[i](1;14){
326: ^d.roll[day](+1)
327: ^d.sql-string[]<br>
328: }
329:
330:
331:
332:
333:
1.22 paf 334:
335: @exceptions1[]
336: ^try{
337: aaa
1.24 paf 338: ^throw[custom1;paf;is stupid]
1.22 paf 339: }{
1.24 paf 340: ^if($exception.type eq custom1){
1.28 paf 341: # $exception.handled(1)
342: ^throw[$exception]
1.24 paf 343: type=$exception.type<br>
344: source=$exception.source<br>
345: file=$exception.file<br>
346: lineno=$exception.lineno<br>
347: comment=$exception.comment<br>
348: }
1.22 paf 349: }
1.21 paf 350:
351: @locate_by_expr[]
352: $t[^table::create{a b
353: 1 nok
354: 2 ok
355: 3 nok
356: }]
357: ^if(^t.locate($t.a==2)){$t.b}{n}
1.17 paf 358:
359: @method_junction_params[param]
360: ^if($param is junction){junction}{ne junction}
361:
362: @verifyCookie[value]
363: ^if($cookie:dummyvote eq $value){
364: $result(1)
365: }{
366: $cookie:dummyvote[$value]
367: $result(0)
368: }
1.16 paf 369:
370: @execlangs[]
1.20 paf 371: $f[^file::exec[test.pl]]
1.36 paf 372: err:$f.stderr<br>
1.16 paf 373: ^process{$f.text}
374: #$c[^t.columns[]]
375: #^c.menu{
376: #* $c.column<br>
377: #}
1.36 paf 378: c:$t.c<br>
1.16 paf 379:
380: @tobjeresult[]
381: ^table::create{a
382: 12}
1.15 paf 383:
384: @xmlprobs[]
385: $xmlDataType[^xdoc::load[program.xml]]
386: #<pre>^taint[^xmlDataType.string[]]
387: $xmlDataTypes[^xmlDataType.select[programs/program[@id=4]/data]]
388: #=^xmlDataTypes._count[]=
389: =^xmlDataTypes.0.getAttribute[type-id]=
390:
391: @doubleprobs[]
392: $1(^math:radians(180))
393: $2($math:PI)
394: ^if(^1.format[%.10f]==^2.format[%.10f]){y;n}
395: ^if($1==$2){y;n}
396: ^if(^math:radians(180)==$math:PI){y;n}
397:
398:
399: @divnamestop[]
400: $a(10)
401: ^eval($a\3)
402:
403: @arrayclone[]
404: $t[^table::create{a b
405: 1 11
406: 2 22
407: }]
408: $c[^table::create[$t]]
409: ^c.append{2 33}
410: ^t.count[]
411: ^c.count[]
412:
413: @operator_tricks[]
414: ^if(1){$a[^t[]]}
415: $a!
416: $a($b)
417: ^if(1){y}{n}
418: $MAIN:a(^t[] eq OK)
419: #$MAIN:a(1)
420: ^if($a){y}{n}
421: #^if(1){y}{n}
422: $form:if
423: $a[$.n[1]]
424: $a.if
425:
426: @xoutputrusattr[]
427: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d attr="привет"/>}]
428: ^show_xdoc2[$d]
429:
430: @xdocset1[]
431: $d[^xdoc::set{<?xml version="1.0"?><d>=^taint[&]=</d>}]
432: ^show_xdoc2[$d]
433:
434: @regexp3[]
435: $s[abcАБВ]
436: ^if(^s.match[][i]){y}{n}
437:
438:
439: @exec2[]
440: $a[^file::exec[bin/t.cmd]]
441: <pre>^taint[$a.text]</pre>|$a.status|$a.stderr<hr>
442:
443:
444: @tlock[]
445: ^file:lock[lockfile]{
446: code
447: }
448:
449: @xmloutattrwithoutvalue[]
450: #$ORIGINS(1)
451: $doc[^xdoc::set{<?xml version="1.0"?><doc background="">zz</doc>}]
452: $doc[^doc.transform[global.xsl]]
453: =^taint[html][^doc.string[$.method[html]]]=
454:
455:
456:
457: @precisionProblem[]
458: $a[123456789012345678901234567890]
459: $b(^a.double[])
460: ^b.format{%.20E}
461: <hr>
462: ^eval(2*2)
463:
464: @xpath[]
465: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
466: <document><block><p>привет</p></block></document>
467: }]
468: #^show_xdoc2[$xdoc]
469: $node[^xdoc.selectSingle[/document/block/p]]
470: ^if(def $node){
471: ^if($node is string){
472: $node
473: }{
474: ^if($node is hash){
475: ^node._count[]
476: }{
477: $node.nodeType
478: }
479: }
480: #$node.firstChild.nodeValue
481: }{
482: node not found
483: }
484:
485:
486: @ttablesetlang[]
487: $a-tab-b[a b
488: 1 2]
489:
490: $t[^table::set{$a-tab-b}]
491: =$t.a=
492: <hr>
493:
494: $t[^table::set[nameless]{^taint[$a-tab-b]}]
495: =$t.0=
496: <hr>
497:
498: $t[^table::set{^untaint{^taint[$a-tab-b]}}]
499: =$t.a=
500:
501: #^t.append{1 2}
502:
503: @mail3[]
504: ^mail:send[
505: $.from[Александр Петросян <paf@design.ru>]
506: $.to[Александр Петросян <paf@design.ru>]
507: $.subject[проверка4]
508: $.body[
509: $.text[
510: $.content-type[$.value[text/plain] $.charset[windows-1251]]
511: $.body[проверка]
512: ]
513: $.attachment[
514: $.value[^file::load[text;index.html]]
515: $.file-name[привет всем.html]
516: ]
517: ]
518: ]
519:
520:
521: @ttime[]
522: $now[^date::now[]]
523: $now.hour:$now.minute
524:
525: @tupper[]
526: $t[abcABCабвАБВ]
527: $t<br>
528: ^t.upper[]
529:
530: @treplace[]
531: $copy-paste-clean[^table::set{a b
532: . _
533: , _
534: + _
535: & _
536: ? _
537: = _}]
538:
539: $cache_key[^taint[в.а,с+я]&был?тут=недавно.cache]
540: # почему-то этот replace роняет апач в 500 ошибку :(
541: #^cache_key.replace[$copy-paste-clean]
542: $test[abc]
543: ^test.save[$cache_key]saved<br>
544: $cache[^file:list[.;\.cache^$]]
545: ^file:delete[$cache_key]deleted($cache.name)<br>
546:
547:
548:
549: @xslt2[]
550: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
551: <document><block><p>привет</p></block></document>
552: }]
553: ^show_xdoc2[$xdoc]
554: ^show_xdoc2[^xdoc.transform[templates/_document.xslt]]
555: <hr>
556:
557:
558: @tcache2[]
559: ^cache[$DB_HOME/keyключ](2){
560: ^math:random(100)
561: }
562:
563: @ttaintuntaint[]
564: <!-- некий панковский заголовок с буковкой C в круглых скобках -->^taint[html][
565:
566: ]zz
567: <hr>
568: ^untaint[html]{1^taint[ ]2 3}
569:
570:
571: @tappend2[]
572: $t[^table::set{a b}]^t.append{1 2}$t.a
573:
574: @badvsnprintf[]
575: ^connect[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz]{
576: }
577:
578:
579: @badoracequoting[]
580: $SQL.connect-string[oracle://webspb:webpwd@mts?NLS_LANG=RUSSIAN_AMERICA.CL8MSWIN1251&NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS]
581: ^connect[$SQL.connect-string]{
582: ^void:sql{delete from paf}
583: ^void:sql{insert into paf values (1, '$form:text')}
584: $paf[^table::sql{select * from paf}]
585: ^paf.menu{
586: $paf.id: ^untaint{$paf.block}<hr>
587:
588: }
589: <hr>
590:
591:
592: ^rem{
593: $news[^table::sql{select description from news}[$.limit(3)]]
594: ^news.menu{
595: ^untaint{$news.description}<hr>
596:
597: }
598: <hr>
599: }
600:
601: $tables[^table::sql{select table_name from user_tables}]
602: ^tables.menu{
603: $tables.table_name<br>
604: }
605:
606: }
607: <hr>
608: $env:PATH
609:
610: @badconstructors[]
611: $bred[^string::length[]]
612: $bred[^response::clear[]]
613: $bred[^int::int[]]
614:
615:
616: @xloadwrongtable[]
617: $constr[^xdoc::load[wrongtable.xml]]
618: ^show_xdoc2[$constr]
619:
620: @xsetwrongtable[]
621: $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251z" ?>
622: <block-list>^untaint[as-is]{$constructor}</block-list>}]
623:
624:
625: @tablecolumnerror[]
626: $t[^table::set{a}]
627: $t.$a
628:
629: @roll[]
630: #$date[^date::set(1970;1;2)]
631: #^date.roll[month](-1)
632: $date[^date::set(2038;1;1)]
633: ^date.roll[month](+1)
634: $date.year $date.month $date.day
635:
636: @cookie2[]
637: #=$cookie:clientType[$.value[test]]=<br>
638: =$cookie:clientType=<br>
639:
640:
641: @tableset[]
642: $a[^table::set{a
643: 1
644: 2}]
645: ^eval(100\$a)
646:
647:
648:
649: @zzz[]
650:
651:
652: $constructor[
653: <block1 name="main_srvr" type="0" label="Основное тело" />
654: <block2 name="main_srvr2" type="0" label="Основное тело" />
655: ]
656:
657: $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
658: <block-list>^untaint[as-is]{$constructor}</block-list>}]
659:
660: $children[$constr.documentElement.childNodes]
661: ^if($children){
662: ^for[i](1;^children._count[]){
663: $node[$children.$i]
664: $node.nodeName<br>
665: }
666: }
667:
668:
669: @thashforeach3[]
670: $h[
671: $.a[1]
672: $.b[2]
673: ]
674: $c[^table::set{a
675: ^h.foreach[key;value]{$value
676: }}]
677: $c.a
678:
679: @thashforeach2[]
680: $h[
681: $.a[1]
682: $.b[2]
683: ]
684: $c[
685: ^h.foreach[key;value]{
686: $.$key[$value]
687: }
688: ]
689: $c.b
690:
691: @thashforeach[]
692: $h[
693: $.a[1]
694: $.b[2]
695: ]
696: ^h.foreach[key;value]{
697: $key=$value<br>
698: }
699:
700: @thashdelete[]
701: $h[$.a[1] $.b[2]]
702: was:<br>
703: count=^h._count[] <br>
704: b='$h.b' <br>
705:
706: ^h.delete[b]
707:
708: now:<br>
709: count=^h._count[] <br>
710: b='$h.b'
711:
712: @sappend[]
713: $test[123]
714: ^test.save[test]
715: ^test.save[append;test]
716:
717: @tappend[]
718: $test[^table::set{a b
719: a1 b1}]
720: ^test.save[test]
721: $test[^table::set{a b
722: a2 b2}]
723: ^test.save[append;test]
724:
725:
726: @tform[]
727: ^if(def $form:new_file){y}{n}
728: <form method="post" enctype="multipart/form-data">
729: <input type="file" name="new_file" />
730: <input type=submit>
731: </input>
732:
733: @formattest[]
734: $size(15.124)
735:
736: ^size.format{%.2f}
737:
738: @filelist[]
739: $html[^file:list[.;\.html^$]]
740: ^html.menu{
741: $html.name<br>
742: }
743: <hr>
744:
745: @безнадёжна_попытка_поправить_непоправимое[]
746: $dom_from_disk[^xdoc::load[input.xml]]
747: $dom_created_in_air[^xdoc::create[doc]]
748: ^dom_created_in_air.documentElement.appendChild[^dom_from_disk.documentElement.cloneNode(1)]
749: ^show_xdoc2[$dom_created_in_air]
750:
751:
752: @tcache[]
753: #^hashfile:clear[cache]
754: $code[^hashfile::open[$DB_HOME;cache]]
755: ^code.cache[key](2){
756: ^math:random(100)
757: # ^code.delete[]
758: }
759:
760: @thashfileexp[]
761: $hf[^hashfile::open[$DB_HOME;hashfile]]
762: $hf.paf[$.value[крут] $.expires(3)]
763: paf=$hf.paf
764: <hr>
765: ^hf.foreach[key;value]{
766: $key=$value<br>
767: }
768: <hr>
769: $hash[^hf.hash[]]
770: =$hash.paf=
771: <hr>
772:
773: @tcounter[]
774: ^tcounterone[$DB_HOME]
775: other root:
776: ^tcounterone[${DB_HOME}2]
777: again, first:
778: ^tcounterone[$DB_HOME]
779:
780: @tcounterone[DB_HOME]
781: $counter[^hashfile::open[$DB_HOME;counter]]
782: #^counter.clear[]
783: ^counter.transaction{
784: # $counter.value(10)
785: $counter.value($counter.value+1)
786: # ^counter.delete[value]
787: $counter.value
788: }
789: <hr>
790: ^rem{
791: $hash[^counter.hash[]]
792: =$hash.value=
793: <hr>
794: }
795:
796: @tablehash[]
797: $productList[^table::set{id name
798: 1 носки
799: 2 валенки
800: 3 ушанка
801: }]
802:
803: #скажем, у первого дилера
804: $firstPriceList[^table::set{id price
805: 1 0.3
806: 3 1000
807: }]
808:
809: $firstPriceHash[^firstPriceList.hash[id]]
810:
811: ^productList.menu{
812: продукт "$productList.name" | цена у first: $firstPriceHash.[$productList.id].price<br>
813: }
814:
815:
816: @hashfile[]
817: $hf[^hashfile::assign[hashfile]]
818: #$hf.paf[крут5]
819: paf=$hf.paf
820:
821: @formclass[]
822: ^$form:CLASS.a=$form:CLASS.a
823:
824: @domdata[]
825: ^if(1){
826: # $a{^hren[]}
827: }
828: $a
829: $xdoc[^xdoc::create[doc]]
830: $doc[$xdoc.documentElement]
831: $name[^doc.appendChild[^xdoc.createElement[name]]]
832: $text[^name.appendChild[^xdoc.createTextNode[петросян&coz]]]
833: ^untaint[as-is]{=$text.nodeValue=}
834:
835: @domedit[]
836: ^domdata[]
837: #$paf.nodeName<br>
838: #$doc.documentElement.nodeName<br>
839:
840: ^show_xnode1[$xdoc.documentElement;0;1]
841: <hr>
842: ^show_xdoc2[$xdoc]
843: <hr>
844:
845: @domxslt[]
846: ^domdata[]
847: ^show_xdoc2[^xdoc.transform[global.xsl;$.param1[123/]]]
848: <hr>
849:
850: @lsplit2[]
851: $path[/optics/]
852: $pathTable[^path.lsplit[/]]
853: ^pathTable.menu{
854: ^if(def $pathTable.piece){
855: =$pathTable.piece=
856: }
857: }
858:
859:
860: @faceesize[]
861: $k(2)
862: $pict[^image::load[paf.gif]]
863: $small[^image::create($pict.width/$k;$pict.height/$k)]
864: ^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;250)
865: $response:body[^small.gif[]]
866:
867: @imageresize[]
868: $k(2)
869: $pict[^image::create(400*$k;200*$k)]
870: $pict.line-width(2)
871: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)
872: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-20;$pict.height-20;0+20;360-20;0xff0000)
873: #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)
874: ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-20;0x0000ff)
875: ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+20;360-20;0xff0000)
876: $response:body[^pict.gif[]]
877:
878: #$small[^image::create($pict.width/$k;$pict.height/$k)]
879: #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0)
880: #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;0)
881:
882: #$response:body[^small.gif[]]
883:
884:
885: @tintdefault[]
886: #$abc[abc]
887: $abc[33]
888: ^abc.int[z]
889: #^abc.int(123)
890:
891: @ifassignhash[]
892: $h[^if(1){$.a(1);$.a(2)}]
893: $h.a
894:
895: @ifpasshash[]
896: $a[$.e[a]]
897: $b[$.e[b]]
898: ^ifpasshashdest[^if(1){$a;$b}]
899: #$x[^if(1){$a}{$b}]
900: #^ifpasshashdest[$x]
901:
902: @ifpasshashdest[p]
903: $p.e
904:
905: @movedir[]
906: ^file:move[a;deeper/a]
907:
908: @replace[]
909: $a[12^;3]
910: ^a.replace[^table::set{from to
911: 2^; !
912: }]
913:
914:
915: @set[]
916: ^setdata[]
917: ^a.add[$b]
918: add:$a.3<br>
919:
920: ^setdata[]
921: ^a.sub[$b]
922: sub2:$a.2<br>
923: sub1:$a.1<br>
924:
925: ^setdata[]
926: $c[^a.union[$b]]
927: union3:$c.3<br>
928: union2:$c.2<br>
929:
930: ^setdata[]
931: $c[^a.intersection[$b]]
932: intersection3:$c.3<br>
933: intersection2:$c.2<br>
934:
935: ^setdata[]
936: intersects:^if(^a.intersects[$b]){y;n}<br>
937: intersects2:^if(^a.intersects[ ]){y;n}<br>
938:
939:
940: <hr>
941:
942: @setdata[]
943: $a[$.1[a1] $.2[a2]]
944: $b[ $.2[b2] $.3[b3]]
945:
946:
947: @hash[]
948: $h[^hash::create[$._default[123]]]
949: $h.paf[not kretin]
950: $h.paf<br>
951: =$h.that=<br>
952:
953: @methresult[]
954: $result[^table::set{1}]
955:
956: @terror[]
957: ^error[method z must be called with z]
958:
959: @syntax1[]
960: #^a[^b]
961:
962: @syntax2[]
963: #^a[
964:
965: @ssave[]
966: $abc[abc]
967: ^abc.save[abc]
968:
969: @calendar[]
970: 2001;11:<br>
971: $week_days[^date:calendar[rus](2001;11)]
972: <pre>
973: ^week_days.menu{^for[wday](0;7){^if($week_days.$wday){$week_days.$wday; ^; ^;} }<br>}
974: </pre>
975:
976: @thash[]
977: $table[^table::set{id name age
978: 1 paf 278
979: 2 пиф 234
980: }]
981: $hash[^table.hash[id;^table::set[nameless]{id
982: name}]]
983: $hash.2.id $hash.2.name $hash.2.age
984:
985: @tdef[]
986: $s[0]
987: if 0=^if($s){}{n}<br>
988: if def 0=^if(def $s){y}{}<br>
989: <hr>
990:
991: @ford[]
992: ^for[i](0;5){$i}{($i)}
993:
994: @tif[]
995: ^if[def]{y;n}
996:
997: @image[]
998: $pict[^image::create(400;200)]
999: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)
1000: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-10;$pict.height-10;0+10;360-10;0xff0000)
1001: #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)
1002: ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-10;0x0000ff)
1003: ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+10;360-10;0xff0000)
1004: $response:body[^pict.gif[]]
1005:
1006:
1007:
1008: @mail2[]
1009: ^mail:send[
1010: $.content-type[$.value[text/plain] $.charset[windows-1251]]
1011: $.from[Александр Петросян <paf@design.ru>]
1012: $.to[Александр Петросян <paf@design.ru>]
1013: $.subject[проверка]
1014: $.body[проверка]
1015: ]
1016:
1017: @cookie[]
1018: $env:HTTP_COOKIE<br>
1019:
1020: #$cookie:переменная[test тест ТЕСТ2]
1021: =$cookie:переменная=<br>
1022: #$cookie:переменная2[test тест ТЕСТ3]
1023: =$cookie:переменная2=<br>
1024: =$cookie:CLASS.переменная2=<br>
1025:
1026: @response[]
1027: #^if($form:reload){
1028: $response:refresh[$.value[0] $.url[./t.html?uri=$env:SERVER_NAME]]
1029: #}
1030:
1031: @xslt[]
1032: ^xdata[]
1033: $transformed[^xdoc.transform[global.xsl;$.param1[123/]]]
1034: ^show_xdoc2[$transformed]
1035:
1036: @regexp2[]
1037: $s[ select]
1038: $s[^s.match[^^\s*][]{!}]
1039: $s
1040:
1041: @header[]
1042: $response:refresh[
1043: $.value[0]
1044: $.url[http://design.ru?a=^taint[123]]
1045: ]
1046:
1047: @ttablerem[]
1048: $table[^table::load[a.cfg]]
1049: ^table.menu{$table.a}
1050:
1051: @tconnect[]
1052: ^connect[mysql://test:test@paf/test?charset=cp1251_koi8&compress=1&timeout=1&named_pipe=1]{
1053: $tables[^table::sql{show tables}]
1054: #$cols[^tables.columns[]]
1055: #$cols.column
1056: ^tables.menu{
1057: $tables.[Tables_in_test]<br>
1058: }
1059: }
1060:
1061: @pcre[]
1062: $s[1 2]
1063: ^s.match[\s;ig]{!}
1064: #^s.match[\d;ig]{!}
1065:
1066:
1067: @regexp[]
1068: $s[abcАБВ]
1069: ^if(^s.match[б][i]){y}{n}
1070:
1071: @mail[]
1072: #$ORIGINS(1)
1073: ^mail:send[
1074: $.from[paf@design.ru]
1075: $.to[paf@design.ru]
1076: $.body[1
1077:
1078: 2
1079:
1080:
1081: 3]
1082: ]
1083:
1084: @exec[]
1085: $a[^file::exec[fc.exe;;a;b]]
1086: $a.status|$a.stderr<hr>
1087:
1088: @fori[][i]
1089: ^for[i](1;3){... =$i= ...}
1090:
1091: @xdata0[]
1092: #$response:content-type[$.value[text/html] $.charset[windows-1251]]
1093: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
1094: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
1095: <people>
1096: <man id="1" имя="word слово">
1097: <name>P«^;AF B</name>
1098: </man>
1099: <man id="2">
1100: <name>ПИФ^taint[&]</name>
1101: </man>
1102: </people>
1103: }]
1104:
1105: @xdata[]
1106: #$response:content-type[$.value[text/html] $.charset[windows-1251]]
1107: $xdoc[^xdoc::set{^process{<?xml version="1.0" encoding="windows-1251"?>
1108: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
1109: <people>
1110: <man id="1" имя="word слово">
1111: <name>P«^;AF B</name>
1112: </man>
1113: <man id="2">
1114: <name>ПИФ^taint[&]</name>
1115: </man>
1116: </people>
1117: }}]
1118:
1119: @xml[]
1120: ^xdata[]
1121:
1122: ^show_xdoc2[$xdoc]<hr>
1123: #^show_xnode1[$xdoc]<hr>
1124: $people[^xdoc.select[*/man]]
1125: #^show1[]
1126: ^show_xnodes1[$people]<hr>
1127: #^people.0.owner.hren[]
1128:
1129: ^show_xnode1[^xdoc.selectSingle[*/man[2]/name];0;1]<hr>
1130:
1131: by id:
1132: ^show_xnode1[^xdoc.getElementById[1];0;1]
1133: <hr>
1134:
1135: @show1[array]
1136: ^for[i](0;^array._count[]-1){
1137: $x[$array.$i]
1138: $x.firstChild.nodeValue:
1139: $pattributes[$x.parentNode.attributes]
1140: ^if(^pattributes._count[]){
1141: $pattributes.id.name=$pattributes.id.nodeValue
1142: }
1143: <br>
1144: }
1145:
1146: @show_xnodes1[array][i]
1147: ^for[i](0;^array._count[]-1){
1148: ^show_xnode1[$array.$i;0;1]
1149: }
1150:
1151: @show_xnode1[x;level;single][l]
1152: ^if(def $x){
1153: ^for[l](0;$level-1){ ^; ^; ^; ^;}
1154: ^if($x.nodeType == $xnode:ELEMENT_NODE){
1155: <^;$x.nodeName
1156: $pairs[$x.attributes]
1157: ^if(def $pairs){
1158: $names[^pairs._keys[]]
1159: ^names.menu{ $names.key="$pairs.[$names.key].nodeValue"}
1160: }
1161: >^;
1162: }{
1163: [$x.nodeType]
1164: }
1165:
1166: ^if(def $x.nodeValue){$x.nodeValue}<br>
1167: ^show_xnode1[$x.firstChild]($level+1)
1168: ^if(!$single){
1169: ^show_xnode1[$x.nextSibling]($level)
1170: }
1171:
1172: ^if($x.nodeType == $xnode:ELEMENT_NODE){
1173: ^for[l](0;$level-1){ ^; ^; ^; ^;}<^;/$x.nodeName>^;<br>
1174: }
1175: }
1176:
1177: @show_xdoc2[xdoc]
1178: ^xdoc.save[out/save.xml;
1179: # $.encoding[utf-8]
1180: $.method[xml]
1181: ]
1182: $file[^xdoc.file[
1183: $.encoding[utf-8]
1184: $.method[html]
1185: ]]
1186: ^file.save[text;out/save_file.html]
1187: #$response:body[^xdoc.file[ $.media-type[text/paf] ]]
1188: <pre>^taint[html][^xdoc.string[
1189: $.method[html]
1190: # $.encoding[utF-8]
1191: # $.omit-xml-declaration[yes]
1192: # $.standalone[no]
1193: # -$.doctype-public[-//W3C//DTD XHTML]
1194: # -$.doctype-system[/a/b/c/]
1195: # $.indent[yes]
1196: # $.media-type[text/paf]
1197: ]]
1198: </pre>
E-mail: