Annotation of parser3/www/htdocs/index.html, revision 1.3
1.1 paf 1: @auto[]
2: $request:charset[windows-1251]
3: $response:charset[windows-1251]
4: $response:content-type[$.value[text/html]$.charset[$response:charset]]
5:
6: @main[]
1.3 ! paf 7: ^if(1){y}{n}
1.2 paf 8: $form:if
1.3 ! paf 9: $a[$.n[1]]
! 10: $a.if
1.2 paf 11: #^xoutputrusattr[]
1.1 paf 12: #^xdocset1[]
13: #^regexp3[]
14: #^exec2[]
15: #^tlock[]
16: #^xmloutattrwithoutvalue[]
17: #^precisionProblem[]
18: #^xpath[]
19: #^ttablesetlang[]
20: #^mail3[]
21: #^ttime[]
22: #^tupper[]
23: #^treplace[]
24: #^xslt2[]
25: #^tcache2[]
26: #$ORIGINS(1)
27: #$t[^table::set{a b} ^table::set{c d}]
28: #^ttaintuntaint[]
29: #^tappend2[]
30: #^badvsnprintf[]
31: #^badoracequoting[]
32: #^badconstructors[]
33: #^xloadwrongtable[]
34: #^xsetwrongtable[]
35: #^if($form:test){y}{n}
36: #^tablecolumnerror[]
37: #^roll[]
38: #^cookie2[]
39: #^tableset[]
40: #^math:PI.format{%.30f}
41: #^xchildren[]
42: #^thashforeach3[]
43: #^thashforeach2[]
44: #^thashforeach[]
45: #^thashdelete[]
46: #^connect[mysql://user:pass@cd.rinet.ru/db]{^void:sql{z} }
47: #^tappend[]
48: #^sappend[]
49: #^eval(10\3)<br>
50: #^tform[]
51: #^formattest[]
52: #^filelist[]
53: #^connect[mysql://user:pass@host]{ }
54: #^безнадёжна_попытка_поправить_непоправимое[]
55: #^tcache[]
56: #^thashfileexp[]
57: #^tcounter[]
58: #^tablehash[]
59: #j^hashfile[]
60: #^formclass[]
61: #^hren[]
62: #^domedit[]
63: #^domxslt[]
64: #^lsplit2[]
65: #^faceesize[]
66: #^imageresize[]
67: #^ifassignhash[]
68: #^tintdefault[]
69: #$response:status[404]
70: #^ifpasshash[]
71: #^movedir[]
72: #^replace[]
73: #^set[]
74: #^hash[]<hr>
75: #$t[^methresult[]] ->$t
76: #^terror[]
77: #^ssave[]
78: #^calendar[]
79: #^thash[]
80: #^tdef[]
81: #^ford[]
82: #^tif[]
83: #^image[]
84: #^mail2[]
85: #^cookie[]
86: #^response[]
87: #^regexp2[]
88: #^ttablerem[]
89: #^pcre[]
90: #^regexp[]<hr>
91: #^mail[]
92: #^exec[]
93: #^fori[]
94: #^tconnect[]
95: #^xslt[]
96: #^xml[]
97: #^header[]
98: <hr>
99: OK
100:
101: @xoutputrusattr[]
102: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d attr="привет"/>}]
103: ^show_xdoc2[$d]
104:
105: @xdocset1[]
106: $d[^xdoc::set{<?xml version="1.0"?><d>=^taint[&]=</d>}]
107: ^show_xdoc2[$d]
108:
109: @regexp3[]
110: $s[abcАБВ]
111: ^if(^s.match[][i]){y}{n}
112:
113:
114: @exec2[]
115: $a[^file::exec[bin/t.cmd]]
116: <pre>^taint[$a.text]</pre>|$a.status|$a.stderr<hr>
117:
118:
119: @tlock[]
120: ^file:lock[lockfile]{
121: code
122: }
123:
124: @xmloutattrwithoutvalue[]
125: #$ORIGINS(1)
126: $doc[^xdoc::set{<?xml version="1.0"?><doc background="">zz</doc>}]
127: $doc[^doc.transform[global.xsl]]
128: =^taint[html][^doc.string[$.method[html]]]=
129:
130:
131:
132: @precisionProblem[]
133: $a[123456789012345678901234567890]
134: $b(^a.double[])
135: ^b.format{%.20E}
136: <hr>
137: ^eval(2*2)
138:
139: @xpath[]
140: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
141: <document><block><p>привет</p></block></document>
142: }]
143: #^show_xdoc2[$xdoc]
144: $node[^xdoc.selectSingle[/document/block/p]]
145: ^if(def $node){
146: ^if($node is string){
147: $node
148: }{
149: ^if($node is hash){
150: ^node._count[]
151: }{
152: $node.nodeType
153: }
154: }
155: #$node.firstChild.nodeValue
156: }{
157: node not found
158: }
159:
160:
161: @ttablesetlang[]
162: $a-tab-b[a b
163: 1 2]
164:
165: $t[^table::set{$a-tab-b}]
166: =$t.a=
167: <hr>
168:
169: $t[^table::set[nameless]{^taint[$a-tab-b]}]
170: =$t.0=
171: <hr>
172:
173: $t[^table::set{^untaint{^taint[$a-tab-b]}}]
174: =$t.a=
175:
176: #^t.append{1 2}
177:
178: @mail3[]
179: ^mail:send[
180: $.from[Александр Петросян <paf@design.ru>]
181: $.to[Александр Петросян <paf@design.ru>]
182: $.subject[проверка4]
183: $.body[
184: $.text[
185: $.content-type[$.value[text/plain] $.charset[windows-1251]]
186: $.body[проверка]
187: ]
188: $.attachment[
189: $.value[^file::load[text;index.html]]
190: $.file-name[привет всем.html]
191: ]
192: ]
193: ]
194:
195:
196: @ttime[]
197: $now[^date::now[]]
198: $now.hour:$now.minute
199:
200: @tupper[]
201: $t[abcABCабвАБВ]
202: $t<br>
203: ^t.upper[]
204:
205: @treplace[]
206: $copy-paste-clean[^table::set{a b
207: . _
208: , _
209: + _
210: & _
211: ? _
212: = _}]
213:
214: $cache_key[^taint[в.а,с+я]&был?тут=недавно.cache]
215: # почему-то этот replace роняет апач в 500 ошибку :(
216: #^cache_key.replace[$copy-paste-clean]
217: $test[abc]
218: ^test.save[$cache_key]saved<br>
219: $cache[^file:list[.;\.cache^$]]
220: ^file:delete[$cache_key]deleted($cache.name)<br>
221:
222:
223:
224: @xslt2[]
225: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
226: <document><block><p>привет</p></block></document>
227: }]
228: ^show_xdoc2[$xdoc]
229: ^show_xdoc2[^xdoc.transform[templates/_document.xslt]]
230: <hr>
231:
232:
233: @tcache2[]
234: ^cache[$DB_HOME/keyключ](2){
235: ^math:random(100)
236: }
237:
238: @ttaintuntaint[]
239: <!-- некий панковский заголовок с буковкой C в круглых скобках -->^taint[html][
240:
241: ]zz
242: <hr>
243: ^untaint[html]{1^taint[ ]2 3}
244:
245:
246: @tappend2[]
247: $t[^table::set{a b}]^t.append{1 2}$t.a
248:
249: @badvsnprintf[]
250: ^connect[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz]{
251: }
252:
253:
254: @badoracequoting[]
255: $SQL.connect-string[oracle://webspb:webpwd@mts?NLS_LANG=RUSSIAN_AMERICA.CL8MSWIN1251&NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS]
256: ^connect[$SQL.connect-string]{
257: ^void:sql{delete from paf}
258: ^void:sql{insert into paf values (1, '$form:text')}
259: $paf[^table::sql{select * from paf}]
260: ^paf.menu{
261: $paf.id: ^untaint{$paf.block}<hr>
262:
263: }
264: <hr>
265:
266:
267: ^rem{
268: $news[^table::sql{select description from news}[$.limit(3)]]
269: ^news.menu{
270: ^untaint{$news.description}<hr>
271:
272: }
273: <hr>
274: }
275:
276: $tables[^table::sql{select table_name from user_tables}]
277: ^tables.menu{
278: $tables.table_name<br>
279: }
280:
281: }
282: <hr>
283: $env:PATH
284:
285: @badconstructors[]
286: $bred[^string::length[]]
287: $bred[^response::clear[]]
288: $bred[^int::int[]]
289:
290:
291: @xloadwrongtable[]
292: $constr[^xdoc::load[wrongtable.xml]]
293: ^show_xdoc2[$constr]
294:
295: @xsetwrongtable[]
296: $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251z" ?>
297: <block-list>^untaint[as-is]{$constructor}</block-list>}]
298:
299:
300: @tablecolumnerror[]
301: $t[^table::set{a}]
302: $t.$a
303:
304: @roll[]
305: #$date[^date::set(1970;1;2)]
306: #^date.roll[month](-1)
307: $date[^date::set(2038;1;1)]
308: ^date.roll[month](+1)
309: $date.year $date.month $date.day
310:
311: @cookie2[]
312: #=$cookie:clientType[$.value[test]]=<br>
313: =$cookie:clientType=<br>
314:
315:
316: @tableset[]
317: $a[^table::set{a
318: 1
319: 2}]
320: ^eval(100\$a)
321:
322:
323:
324: @zzz[]
325:
326:
327: $constructor[
328: <block1 name="main_srvr" type="0" label="Основное тело" />
329: <block2 name="main_srvr2" type="0" label="Основное тело" />
330: ]
331:
332: $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
333: <block-list>^untaint[as-is]{$constructor}</block-list>}]
334:
335: $children[$constr.documentElement.childNodes]
336: ^if($children){
337: ^for[i](1;^children._count[]){
338: $node[$children.$i]
339: $node.nodeName<br>
340: }
341: }
342:
343:
344: @thashforeach3[]
345: $h[
346: $.a[1]
347: $.b[2]
348: ]
349: $c[^table::set{a
350: ^h.foreach[key;value]{$value
351: }}]
352: $c.a
353:
354: @thashforeach2[]
355: $h[
356: $.a[1]
357: $.b[2]
358: ]
359: $c[
360: ^h.foreach[key;value]{
361: $.$key[$value]
362: }
363: ]
364: $c.b
365:
366: @thashforeach[]
367: $h[
368: $.a[1]
369: $.b[2]
370: ]
371: ^h.foreach[key;value]{
372: $key=$value<br>
373: }
374:
375: @thashdelete[]
376: $h[$.a[1] $.b[2]]
377: was:<br>
378: count=^h._count[] <br>
379: b='$h.b' <br>
380:
381: ^h.delete[b]
382:
383: now:<br>
384: count=^h._count[] <br>
385: b='$h.b'
386:
387: @sappend[]
388: $test[123]
389: ^test.save[test]
390: ^test.save[append;test]
391:
392: @tappend[]
393: $test[^table::set{a b
394: a1 b1}]
395: ^test.save[test]
396: $test[^table::set{a b
397: a2 b2}]
398: ^test.save[append;test]
399:
400:
401: @tform[]
402: ^if(def $form:new_file){y}{n}
403: <form method="post" enctype="multipart/form-data">
404: <input type="file" name="new_file" />
405: <input type=submit>
406: </input>
407:
408: @formattest[]
409: $size(15.124)
410:
411: ^size.format{%.2f}
412:
413: @filelist[]
414: $html[^file:list[.;\.html^$]]
415: ^html.menu{
416: $html.name<br>
417: }
418: <hr>
419:
420: @безнадёжна_попытка_поправить_непоправимое[]
421: $dom_from_disk[^xdoc::load[input.xml]]
422: $dom_created_in_air[^xdoc::create[doc]]
423: ^dom_created_in_air.documentElement.appendChild[^dom_from_disk.documentElement.cloneNode(1)]
424: ^show_xdoc2[$dom_created_in_air]
425:
426:
427: @tcache[]
428: #^hashfile:clear[cache]
429: $code[^hashfile::open[$DB_HOME;cache]]
430: ^code.cache[key](2){
431: ^math:random(100)
432: # ^code.delete[]
433: }
434:
435: @thashfileexp[]
436: $hf[^hashfile::open[$DB_HOME;hashfile]]
437: $hf.paf[$.value[крут] $.expires(3)]
438: paf=$hf.paf
439: <hr>
440: ^hf.foreach[key;value]{
441: $key=$value<br>
442: }
443: <hr>
444: $hash[^hf.hash[]]
445: =$hash.paf=
446: <hr>
447:
448: @tcounter[]
449: ^tcounterone[$DB_HOME]
450: other root:
451: ^tcounterone[${DB_HOME}2]
452: again, first:
453: ^tcounterone[$DB_HOME]
454:
455: @tcounterone[DB_HOME]
456: $counter[^hashfile::open[$DB_HOME;counter]]
457: #^counter.clear[]
458: ^counter.transaction{
459: # $counter.value(10)
460: $counter.value($counter.value+1)
461: # ^counter.delete[value]
462: $counter.value
463: }
464: <hr>
465: ^rem{
466: $hash[^counter.hash[]]
467: =$hash.value=
468: <hr>
469: }
470:
471: @tablehash[]
472: $productList[^table::set{id name
473: 1 носки
474: 2 валенки
475: 3 ушанка
476: }]
477:
478: #скажем, у первого дилера
479: $firstPriceList[^table::set{id price
480: 1 0.3
481: 3 1000
482: }]
483:
484: $firstPriceHash[^firstPriceList.hash[id]]
485:
486: ^productList.menu{
487: продукт "$productList.name" | цена у first: $firstPriceHash.[$productList.id].price<br>
488: }
489:
490:
491: @hashfile[]
492: $hf[^hashfile::assign[hashfile]]
493: #$hf.paf[крут5]
494: paf=$hf.paf
495:
496: @formclass[]
497: ^$form:CLASS.a=$form:CLASS.a
498:
499: @domdata[]
500: ^if(1){
501: # $a{^hren[]}
502: }
503: $a
504: $xdoc[^xdoc::create[doc]]
505: $doc[$xdoc.documentElement]
506: $name[^doc.appendChild[^xdoc.createElement[name]]]
507: $text[^name.appendChild[^xdoc.createTextNode[петросян&coz]]]
508: ^untaint[as-is]{=$text.nodeValue=}
509:
510: @domedit[]
511: ^domdata[]
512: #$paf.nodeName<br>
513: #$doc.documentElement.nodeName<br>
514:
515: ^show_xnode1[$xdoc.documentElement;0;1]
516: <hr>
517: ^show_xdoc2[$xdoc]
518: <hr>
519:
520: @domxslt[]
521: ^domdata[]
522: ^show_xdoc2[^xdoc.transform[global.xsl;$.param1[123/]]]
523: <hr>
524:
525: @lsplit2[]
526: $path[/optics/]
527: $pathTable[^path.lsplit[/]]
528: ^pathTable.menu{
529: ^if(def $pathTable.piece){
530: =$pathTable.piece=
531: }
532: }
533:
534:
535: @faceesize[]
536: $k(2)
537: $pict[^image::load[paf.gif]]
538: $small[^image::create($pict.width/$k;$pict.height/$k)]
539: ^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;250)
540: $response:body[^small.gif[]]
541:
542: @imageresize[]
543: $k(2)
544: $pict[^image::create(400*$k;200*$k)]
545: $pict.line-width(2)
546: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)
547: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-20;$pict.height-20;0+20;360-20;0xff0000)
548: #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)
549: ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-20;0x0000ff)
550: ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+20;360-20;0xff0000)
551: $response:body[^pict.gif[]]
552:
553: #$small[^image::create($pict.width/$k;$pict.height/$k)]
554: #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0)
555: #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;0)
556:
557: #$response:body[^small.gif[]]
558:
559:
560: @tintdefault[]
561: #$abc[abc]
562: $abc[33]
563: ^abc.int[z]
564: #^abc.int(123)
565:
566: @ifassignhash[]
567: $h[^if(1){$.a(1);$.a(2)}]
568: $h.a
569:
570: @ifpasshash[]
571: $a[$.e[a]]
572: $b[$.e[b]]
573: ^ifpasshashdest[^if(1){$a;$b}]
574: #$x[^if(1){$a}{$b}]
575: #^ifpasshashdest[$x]
576:
577: @ifpasshashdest[p]
578: $p.e
579:
580: @movedir[]
581: ^file:move[a;deeper/a]
582:
583: @replace[]
584: $a[12^;3]
585: ^a.replace[^table::set{from to
586: 2^; !
587: }]
588:
589:
590: @set[]
591: ^setdata[]
592: ^a.add[$b]
593: add:$a.3<br>
594:
595: ^setdata[]
596: ^a.sub[$b]
597: sub2:$a.2<br>
598: sub1:$a.1<br>
599:
600: ^setdata[]
601: $c[^a.union[$b]]
602: union3:$c.3<br>
603: union2:$c.2<br>
604:
605: ^setdata[]
606: $c[^a.intersection[$b]]
607: intersection3:$c.3<br>
608: intersection2:$c.2<br>
609:
610: ^setdata[]
611: intersects:^if(^a.intersects[$b]){y;n}<br>
612: intersects2:^if(^a.intersects[ ]){y;n}<br>
613:
614:
615: <hr>
616:
617: @setdata[]
618: $a[$.1[a1] $.2[a2]]
619: $b[ $.2[b2] $.3[b3]]
620:
621:
622: @hash[]
623: $h[^hash::create[$._default[123]]]
624: $h.paf[not kretin]
625: $h.paf<br>
626: =$h.that=<br>
627:
628: @methresult[]
629: $result[^table::set{1}]
630:
631: @terror[]
632: ^error[method z must be called with z]
633:
634: @syntax1[]
635: #^a[^b]
636:
637: @syntax2[]
638: #^a[
639:
640: @ssave[]
641: $abc[abc]
642: ^abc.save[abc]
643:
644: @calendar[]
645: 2001;11:<br>
646: $week_days[^date:calendar[rus](2001;11)]
647: <pre>
648: ^week_days.menu{^for[wday](0;7){^if($week_days.$wday){$week_days.$wday; ^; ^;} }<br>}
649: </pre>
650:
651: @thash[]
652: $table[^table::set{id name age
653: 1 paf 278
654: 2 пиф 234
655: }]
656: $hash[^table.hash[id;^table::set[nameless]{id
657: name}]]
658: $hash.2.id $hash.2.name $hash.2.age
659:
660: @tdef[]
661: $s[0]
662: if 0=^if($s){}{n}<br>
663: if def 0=^if(def $s){y}{}<br>
664: <hr>
665:
666: @ford[]
667: ^for[i](0;5){$i}{($i)}
668:
669: @tif[]
670: ^if[def]{y;n}
671:
672: @image[]
673: $pict[^image::create(400;200)]
674: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)
675: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-10;$pict.height-10;0+10;360-10;0xff0000)
676: #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)
677: ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-10;0x0000ff)
678: ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+10;360-10;0xff0000)
679: $response:body[^pict.gif[]]
680:
681:
682:
683: @mail2[]
684: ^mail:send[
685: $.content-type[$.value[text/plain] $.charset[windows-1251]]
686: $.from[Александр Петросян <paf@design.ru>]
687: $.to[Александр Петросян <paf@design.ru>]
688: $.subject[проверка]
689: $.body[проверка]
690: ]
691:
692: @cookie[]
693: $env:HTTP_COOKIE<br>
694:
695: #$cookie:переменная[test тест ТЕСТ2]
696: =$cookie:переменная=<br>
697: #$cookie:переменная2[test тест ТЕСТ3]
698: =$cookie:переменная2=<br>
699: =$cookie:CLASS.переменная2=<br>
700:
701: @response[]
702: #^if($form:reload){
703: $response:refresh[$.value[0] $.url[./t.html?uri=$env:SERVER_NAME]]
704: #}
705:
706: @xslt[]
707: ^xdata[]
708: $transformed[^xdoc.transform[global.xsl;$.param1[123/]]]
709: ^show_xdoc2[$transformed]
710:
711: @regexp2[]
712: $s[ select]
713: $s[^s.match[^^\s*][]{!}]
714: $s
715:
716: @header[]
717: $response:refresh[
718: $.value[0]
719: $.url[http://design.ru?a=^taint[123]]
720: ]
721:
722: @ttablerem[]
723: $table[^table::load[a.cfg]]
724: ^table.menu{$table.a}
725:
726: @tconnect[]
727: ^connect[mysql://test:test@paf/test?charset=cp1251_koi8&compress=1&timeout=1&named_pipe=1]{
728: $tables[^table::sql{show tables}]
729: #$cols[^tables.columns[]]
730: #$cols.column
731: ^tables.menu{
732: $tables.[Tables_in_test]<br>
733: }
734: }
735:
736: @pcre[]
737: $s[1 2]
738: ^s.match[\s;ig]{!}
739: #^s.match[\d;ig]{!}
740:
741:
742: @regexp[]
743: $s[abcАБВ]
744: ^if(^s.match[б][i]){y}{n}
745:
746: @mail[]
747: #$ORIGINS(1)
748: ^mail:send[
749: $.from[paf@design.ru]
750: $.to[paf@design.ru]
751: $.body[1
752:
753: 2
754:
755:
756: 3]
757: ]
758:
759: @exec[]
760: $a[^file::exec[fc.exe;;a;b]]
761: $a.status|$a.stderr<hr>
762:
763: @fori[][i]
764: ^for[i](1;3){... =$i= ...}
765:
766: @xdata0[]
767: #$response:content-type[$.value[text/html] $.charset[windows-1251]]
768: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
769: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
770: <people>
771: <man id="1" имя="word слово">
772: <name>P«^;AF B</name>
773: </man>
774: <man id="2">
775: <name>ПИФ^taint[&]</name>
776: </man>
777: </people>
778: }]
779:
780: @xdata[]
781: #$response:content-type[$.value[text/html] $.charset[windows-1251]]
782: $xdoc[^xdoc::set{^process{<?xml version="1.0" encoding="windows-1251"?>
783: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
784: <people>
785: <man id="1" имя="word слово">
786: <name>P«^;AF B</name>
787: </man>
788: <man id="2">
789: <name>ПИФ^taint[&]</name>
790: </man>
791: </people>
792: }}]
793:
794: @xml[]
795: ^xdata[]
796:
797: ^show_xdoc2[$xdoc]<hr>
798: #^show_xnode1[$xdoc]<hr>
799: $people[^xdoc.select[*/man]]
800: #^show1[]
801: ^show_xnodes1[$people]<hr>
802: #^people.0.owner.hren[]
803:
804: ^show_xnode1[^xdoc.selectSingle[*/man[2]/name];0;1]<hr>
805:
806: by id:
807: ^show_xnode1[^xdoc.getElementById[1];0;1]
808: <hr>
809:
810: @show1[array]
811: ^for[i](0;^array._count[]-1){
812: $x[$array.$i]
813: $x.firstChild.nodeValue:
814: $pattributes[$x.parentNode.attributes]
815: ^if(^pattributes._count[]){
816: $pattributes.id.name=$pattributes.id.nodeValue
817: }
818: <br>
819: }
820:
821: @show_xnodes1[array][i]
822: ^for[i](0;^array._count[]-1){
823: ^show_xnode1[$array.$i;0;1]
824: }
825:
826: @show_xnode1[x;level;single][l]
827: ^if(def $x){
828: ^for[l](0;$level-1){ ^; ^; ^; ^;}
829: ^if($x.nodeType == $xnode:ELEMENT_NODE){
830: <^;$x.nodeName
831: $pairs[$x.attributes]
832: ^if(def $pairs){
833: $names[^pairs._keys[]]
834: ^names.menu{ $names.key="$pairs.[$names.key].nodeValue"}
835: }
836: >^;
837: }{
838: [$x.nodeType]
839: }
840:
841: ^if(def $x.nodeValue){$x.nodeValue}<br>
842: ^show_xnode1[$x.firstChild]($level+1)
843: ^if(!$single){
844: ^show_xnode1[$x.nextSibling]($level)
845: }
846:
847: ^if($x.nodeType == $xnode:ELEMENT_NODE){
848: ^for[l](0;$level-1){ ^; ^; ^; ^;}<^;/$x.nodeName>^;<br>
849: }
850: }
851:
852: @show_xdoc2[xdoc]
853: ^xdoc.save[out/save.xml;
854: # $.encoding[utf-8]
855: $.method[xml]
856: ]
857: $file[^xdoc.file[
858: $.encoding[utf-8]
859: $.method[html]
860: ]]
861: ^file.save[text;out/save_file.html]
862: #$response:body[^xdoc.file[ $.media-type[text/paf] ]]
863: <pre>^taint[html][^xdoc.string[
864: $.method[html]
865: # $.encoding[utF-8]
866: # $.omit-xml-declaration[yes]
867: # $.standalone[no]
868: # -$.doctype-public[-//W3C//DTD XHTML]
869: # -$.doctype-system[/a/b/c/]
870: # $.indent[yes]
871: # $.media-type[text/paf]
872: ]]
873: </pre>
E-mail: