Annotation of parser3/www/htdocs/index.html, revision 1.136
1.104 paf 1: @USE
1.105 paf 2: /derived.p
1.15 paf 3:
1.72 paf 4: @auto[filespec]
5: $selffilespec[$filespec]
1.63 paf 6: #$form:here
1.131 paf 7: #$request:charset[UTF-8]
8: $request:charset[windows-1251]
9: $response:charset[windows-1251]
1.112 paf 10: #$response:charset[UTF-8]
1.131 paf 11: #$response:charset[empty]
1.84 paf 12: #$response:content-type[$.value[text/html]$.charset[$response:charset]]
1.15 paf 13:
1.60 paf 14: #@postprocess[body]
15: #<b>$body</b>
16: #$result[123]
1.37 paf 17:
1.15 paf 18: @main[]
1.72 paf 19: #$a(123)
20: #^a.format[%.10u]
1.71 paf 21: #$result[111]
1.70 paf 22: #^f[a]
1.133 paf 23: #^connect[mysql://mdm:4b833ljq@db-mysql/mdm]{
1.88 paf 24: # ^int:sql{select news_id from news where news_id=-1}[
25: ## $.default{2}
26: # ]<br>
1.115 paf 27: # ^hash::sql{bad}
1.88 paf 28: # ^string:sql{select news_id from news where news_id=-1}[$.default{2}]
1.109 paf 29: # ^file::load[text;^string:sql{select 'from sql server' }]
1.95 paf 30: # ^string:sql{select '^^hello[]' }] $ORIGINS(1)
1.96 paf 31: # ^process{ ^^h[]}
1.97 paf 32: # ^process{^string:sql{select '1
33: # ^^hello[]' }] }
1.131 paf 34: # ^double:sql{select '2*' ^; }
1.133 paf 35: #$card_sequence_expect_no(^double:sql{select 20020909131047 #card_sequence_expect_no from card_sequence})
36: #^card_sequence_expect_no.format[%15.f]
37: #}
1.49 paf 38: #^eval(2)
1.48 paf 39: #^tcrashlocaljunctionsv2[]
1.49 paf 40: #^tcrashlocaljunctions[]
1.50 paf 41: #^tjunctions[]
1.47 paf 42: #^replacetest[]
1.48 paf 43: #^matchoptionpp[]
1.46 paf 44: #^txdocxnodechild[]
1.44 paf 45: #^tclasses[]
1.43 paf 46: #$math:PI
47: #^b:method[]
1.42 paf 48: #^main[]
1.41 paf 49: #^errort[]
1.44 paf 50: #^tselectNumber[]
1.39 paf 51: #$result[hello]
1.36 paf 52: #^invaliddate2[]
53: #^process2[]
54: #^casehashtext[]
1.35 paf 55: #^subjvaltest[]
56: #^tableselect0[]
1.34 paf 57: #^memnotest1[]
1.32 paf 58: #^voidparams[]
1.31 paf 59: #^rolls2[]
1.30 paf 60: #^cacheexpireschanging[]
1.29 paf 61: #^cacheexpiresfixed[]
62: #^dateoffsets[]
63: #^exceptionTypes[]
1.28 paf 64: #^roll2[]
1.27 paf 65: #^rolls[]
1.25 paf 66: #^exceptions1[]
1.22 paf 67: #^locate_by_expr[]
1.18 paf 68: #^method_junction_params{...}
1.17 paf 69: #^verifyCookie[paf]
1.37 paf 70: #^execlangs[]
1.16 paf 71: #$t[^tobjeresult[]]$t.a
72: #^xmlprobs[]
1.15 paf 73: #^doubleprobs[]
74: #^math:random(-10)
75: #^divnamestop[]
76: #^arrayclone[]
77: #^operator_tricks[]
78: #^xoutputrusattr[]
79: #^xdocset1[]
80: #^regexp3[]
81: #^exec2[]
82: #^tlock[]
83: #^xmloutattrwithoutvalue[]
84: #^precisionProblem[]
85: #^xpath[]
86: #^ttablesetlang[]
87: #^ttime[]
88: #^tupper[]
89: #^treplace[]
90: #^xslt2[]
91: #^tcache2[]
92: #$ORIGINS(1)
93: #$t[^table::set{a b} ^table::set{c d}]
94: #^ttaintuntaint[]
95: #^tappend2[]
96: #^badvsnprintf[]
97: #^badoracequoting[]
98: #^badconstructors[]
99: #^xloadwrongtable[]
100: #^xsetwrongtable[]
101: #^if($form:test){y}{n}
102: #^tablecolumnerror[]
103: #^roll[]
104: #^cookie2[]
105: #^tableset[]
106: #^math:PI.format{%.30f}
107: #^xchildren[]
108: #^thashforeach3[]
109: #^thashforeach2[]
110: #^thashforeach[]
111: #^thashdelete[]
112: #^connect[mysql://user:pass@cd.rinet.ru/db]{^void:sql{z} }
113: #^tappend[]
114: #^sappend[]
115: #^eval(10\3)<br>
116: #^tform[]
117: #^formattest[]
118: #^filelist[]
119: #^connect[mysql://user:pass@host]{ }
120: #^безнадёжна_попытка_поправить_непоправимое[]
121: #^tcache[]
122: #^thashfileexp[]
123: #^tcounter[]
124: #^tablehash[]
125: #j^hashfile[]
126: #^formclass[]
127: #^hren[]
128: #^domedit[]
129: #^domxslt[]
130: #^lsplit2[]
131: #^faceesize[]
132: #^imageresize[]
133: #^ifassignhash[]
134: #^tintdefault[]
135: #$response:status[404]
136: #^ifpasshash[]
137: #^movedir[]
138: #^replace[]
139: #^set[]
140: #^hash[]<hr>
141: #$t[^methresult[]] ->$t
142: #^terror[]
143: #^ssave[]
144: #^thash[]
145: #^tdef[]
146: #^ford[]
147: #^tif[]
1.84 paf 148: #^image[]
1.15 paf 149: #^response[]
150: #^regexp2[]
151: #^ttablerem[]
152: #^pcre[]
153: #^regexp[]<hr>
154: #^mail[]
155: #^exec[]
156: #^fori[]
157: #^tconnect[]
158: #^xslt[]
159: #^xml[]
160: #^header[]
1.53 paf 161: #^tablehasht[]
1.54 paf 162: #^datecreatestring[]
1.56 paf 163: #^mssqltypes1[]
164: #^badthrows[]
1.57 paf 165: #^xmlspace[]
166: #^counter[main.counter]
167: #^xpath2[]
168: #^callindirect[]
169: #^junctionprob[]
1.59 paf 170: #^datecreatestring2[]
171: #^tstoredproc[]
172: #^tstoredproc2[]
173: #^forkeys[]
1.60 paf 174: #^pngsize[]
1.61 paf 175: #^checkList[]
1.63 paf 176: #^datetest[]
1.65 paf 177: #^tserge[]
1.69 paf 178: #^envt[]
1.67 paf 179: #^selectt[]
180: #^select2[]
181: #^selectSingle2[]
182: #^selectString2[]
183: #^selectNumber2[]
184: #^selectBool2[]
185: #^xdoccreate[]
186: #^xdoccreatetag[]
1.70 paf 187: #^xdocload[]
1.67 paf 188: #^xdocstring[]
189: #^xdocsave[]
1.68 paf 190: #^div[]
191: #^datecreatestring3[]
1.73 paf 192: #^tfilespec[]
1.77 paf 193: #^tcrypt[]
1.74 paf 194: #^cryptdocsample[]
1.78 paf 195: #^tnormalize[]
1.83 paf 196: #^xmltransformbyxdoc[]
1.81 paf 197: #^sergestrandef[]
1.83 paf 198: #^tstdin[]
199: #^tfind[]
1.86 paf 200: #^mimet[]
1.92 paf 201: #^joinlimit[]
1.89 paf 202: #^tableclonelimit[]
1.91 paf 203: #^transparams[]
204: #^sendtests[]
1.93 paf 205: #^wwrapperpass[]
1.95 paf 206: #^badpos[]
1.98 paf 207: #^processtest[]
208: #^mail3[]
1.99 paf 209: #^mail4[]
1.100 paf 210: #^datesaving[]
1.101 paf 211: #^badconstructor[]
1.103 paf 212: #^calendar[]
1.104 paf 213: #^monthdays(8)
214: #^xdoctypetest[]
1.105 paf 215: #^xtabletest[]
1.117 paf 216: #^staticstest[]
1.108 paf 217: #^staticstest2[]
1.115 paf 218: #^rbodytest[]
219: #^cookie[]
1.116 paf 220: #^cookieexpirestest[]
1.119 paf 221: #^postest[]
1.120 paf 222: #^voidpostest[]
1.123 paf 223: #^virtualtest[]
1.122 paf 224: #^badcolumntest[]
1.124 paf 225: #^delimiters[]
1.125 paf 226: #^новый-split[]
1.127 paf 227: #^грязные-cookie[]
228: #^html-почта[]
229: #^badswitchtest[]
1.128 paf 230: #^okswitchtest[]
1.131 paf 231: #^cgit[]
1.132 paf 232: #^ttransformsep[]
1.133 paf 233: #^calltest[]
1.134 paf 234: #^xpath3[]
1.135 paf 235: #^mail2[]
236: ^doubleliterals[]
1.77 paf 237: <hr>
1.74 paf 238: OK
1.135 paf 239:
1.136 ! paf 240: @method[$bad]
! 241:
1.135 paf 242: @doubleliterals[]
243: #^eval(1e-10)
244: ^eval("1e-20")
1.133 paf 245:
246: @xpath3[]
247: $constr[^xdoc::create{<?xml version="1.0" encoding="$request:charset" standalone="no"?> <constructor-data><object object_type_id="1" template_id="1" data_process_id="1" is_published="1">проверка</object> <block-list> <block name="date" type="0" label="Дата" is_hide_pub="1" data_type="1"/> <block name="content" type="0" label="Текст" is_hide_pub="1" data_type=""/> </block-list></constructor-data>}]
248: $objectData[^constr.selectSingle[/constructor-data/object]]
249: $objectData.nodeType<br>
250: $objectData.firstChild.nodeValue
251:
252: @calltest[]
253: ^calltest2[string]
254:
255: @calltest2[s]
256: $s
1.131 paf 257:
258: @ttransformsep[]
259: $input[^xdoc::load[20020909131046.xml]]
260: $output[^input.transform[generated.xsl]]
261: ^output.string[]
1.127 paf 262:
263: @okswitchtest[]
264: $local[local value]
265: ^switch[1]{
266: ^case[1]{1code $local}
267: }
268:
269: @badswitchtest[]
270: ^switch[1]{
271: ^badswitchtestcase[]
272: }
273: @badswitchtestcase[][local]
274: $local[local value]
275: ^case[1]{1code $local}
276:
277: @badjunction[]
278: ^badj1[]
279: ^badj2[]
280:
281: @html-почта[]
282: $переменная[значение]
283: ^mail:send[
284: $.from[paf@mail]
285: $.to[paf@mail]
286: $.subject[htmltest1]
287: $.html{тест$переменная= !}
288: ]
289:
1.124 paf 290:
291: @грязные-cookie[]
1.126 paf 292: $cookie:a[&]
1.125 paf 293: $cookie:a
1.124 paf 294:
295: @новый-split[]
296: $abc[a.b.c]
297: #$table[^abc.split[.]]
298: #$table[^abc.split[.;l]]
299: #$table[^abc.split[.;v]]
300: $table[^abc.split[.;lv]]
301: ^table.menu{$table.piece}[,]
302: <hr>
303: #$table[^abc.split[.;h]]
304: $table[^abc.split[.;hr]]
305: $table.0,$table.1,$table.2<br>
1.123 paf 306:
307: @delimiters[]
308: $a#1[1]<br>
309: $a#1=<br>
310:
1.121 paf 311:
312: @badcolumntest[]
313: $table[^table::load[ext.cfg]]
314: $table.b
315:
1.120 paf 316:
317: @virtualtest[]
318: $derived[^derived::create[derived create actual param]]
319: ^derived.test[]
320:
1.119 paf 321:
322: @voidpostest[]
323: $s[]
324: ^s.pos[$nothing]
1.118 paf 325:
326: @postest[]
327: $s[$nothing]
328: ^s.pos[$nothing]
1.113 paf 329:
1.115 paf 330: @cookieexpirestest[]
331: #$cookie:exptest[1]
332: #$cookie:exptest[$.value[2] $.expires(+1)]
333: $response:xxxx[^date::now(+10)]
334: $response:yyy[$.value[^date::now(+20)]]
335: $response:yyy[$.value[vvv] $.aaaa[^date::now(+20)]]
336:
1.113 paf 337: @rbodytest[]
338: $request:body=
339: <form method=post>
340: <input type=submit name=paf value=123>
341: </form>
1.107 paf 342:
343: @staticstest2[]
344: ^$derived:derived_var=$derived:derived_var<br>
345: ^$derived:a=$derived:a<br>
1.108 paf 346: $derived:a[changed] ^$derived:a=$derived:a<br>
1.107 paf 347: $derived:derived_var[changed]
348: ^$derived:derived_var=$derived:derived_var<br>
349:
1.105 paf 350: @staticstest[]
351: $derived[^derived::create[]]
352: ^derived.test[]
1.110 paf 353: <hr>
1.106 paf 354: ^$derived.a=$derived.a<br>
355: ^$derived.x=$derived.x<br>
1.110 paf 356: <hr>
357: ^if($derived is derived){derived is derived}{error: derived is not derived}<br>
358: ^if($derived is table){derived is table}{error:derived is not table}<br>
1.111 paf 359: <hr>
360: ^^eval(^$derived)=^eval($derived)<br>
361: ^^if(^$derived)=^if($derived){y}{n}<br>
1.106 paf 362:
1.105 paf 363:
1.104 paf 364: @xdoctypetest[]
365: $xdoc[^xdoc::create[x]]
366: ^if($xdoc is xdoc){y}{n}
367:
368: @xtabletest[]
369: $xtableo[^xtable::create[]]
370: ^if($xtableo is table){y}{n}
1.105 paf 371: #^xtableo.columns[]
1.100 paf 372:
1.103 paf 373: @monthdays[month]
374: $from[^date::create(2000;$month;1)]
375: $to[^date::create($from)] ^to.roll[month](+1)
376: $result($to-$from)
377:
1.100 paf 378: @badconstructor[]
379: ^date::now[]
1.99 paf 380:
381: @datesaving[]
382: $now[^date::now[]]
383: $now.daylightsaving<br>
384: $now.yearday<br>
385: #
386: $date[^date::create(2002;1;3)]
387: $date.daylightsaving<br>
388: $date.yearday
1.97 paf 389:
1.98 paf 390: @mail4[]
391: ^mail:send[
392: $.from[paf@mail.design.ru]
393: $.to[paf@mail.design.ru]
394: $.subject[^taint[uri][москва]=2]
395: $.text[^taint[uri][москва]=]
396: $.html{<a href=http://there.ru/?city=^taint[uri][Москва]>link</a>}
397: ]
1.97 paf 398: @processtest[]
399: $f[^file::load[text;piece.p]] ^process{$f.text}
400: $ORIGINS(1)
1.93 paf 401:
402:
403: @badpos[]
404: $s[123]
1.94 paf 405: ^s.mid(0;2)
1.92 paf 406:
407: @wwrapperpass[]
408: $h[^hash::create[]]
409: $h.a(1)
410: ^my_method[^if(1){$h}]
411: работает. так и должно быть?
412:
413: @my_method[p]
414: ^p._count[]
415:
1.88 paf 416:
417: @tableclonelimit[]
418: $source[^table::create{a
419: aa
420: bb
421: cc}]
422: ^source.offset(1)
423: #$dest[^table::create[$source]]
424: $dest[^table::create[$source;$.offset(2)]]
425: $dest[^table::create[$source;$.limit(2)]]
426: $dest[^table::create[$source;$.offset(1)$.limit(1)]]
427: $dest[^table::create[$source;$.offset(1)$.limit(2)]]
428: $dest[^table::create[$source;$.offset[cur]$.limit(2)]]
429:
430: ^dest.menu{$dest.a}[,]<br>
431:
432: @joinlimit[]
433: $source[^table::create{a
434: aa
435: bb
436: cc}]
437: ^source.offset(2)
438: $dest[^table::create{a
439: xx
440: }]
441: #^dest.join[$source]
442: #^dest.join[$source;$.offset(2)]
443: #^dest.join[$source;$.limit(2)]
444: #^dest.join[$source;$.offset(1)$.limit(1)]
445: #^dest.join[$source;$.offset(1)$.limit(2)]
1.91 paf 446: #^dest.join[$source;$.offset[cur]$.limit(1)]
447: ^dest.join[$source;$.limit(0)]
1.88 paf 448:
449: ^dest.menu{$dest.a}[,]<br>
1.86 paf 450:
451: @cgit[]
452: $f[^file::cgi[showenv.cmd]]
453: $f.HELLO=<br>
454: $f.CONTENT-TYPE=<br>
455: $f.content-type=<br>
456:
1.83 paf 457:
1.84 paf 458: @mimet[]
1.85 paf 459: $f[^file::stat[a.GIF]]
460: $f.content-type
1.84 paf 461:
462:
1.83 paf 463: @tfind[]
464: ^file:find[index.html]
465:
466: @tstdin[]
467: $f[^file::exec[test.pl;$.stdin[проверка stdin потока]]]
468: <pre>$f.text</pre>
1.80 paf 469:
470: @sergestrandef[]
471: $sQuantity[ ]
472: ^sQuantity.int(10)
1.78 paf 473:
474: @xmltransformbyxdoc[]
475: $xdoc[^xdoc::set{^process{<?xml version="1.0" encoding="windows-1251"?>
476: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
477: <people>
478: <man id="1" имя="word слово">
479: <name>1 2</name>
480: </man>
481: </people>
482: }}]
483: $sheet[^xdoc::create{<?xml version="1.0"?>
1.79 paf 484: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
485:
486: >
1.78 paf 487: <!--<xsl:output doctype-public ="-//W3C//DTD XHTML" indent="yes"/>-->
488:
1.79 paf 489: <!--<xsl:import href="http://localhost/html.xsl"/>-->
490: <xsl:import href="html.xsl"/>
491:
1.78 paf 492: <xsl:param name="param1">defparam1</xsl:param>
493: <xsl:param name="param2">defparam2</xsl:param>
1.79 paf 494:
1.78 paf 495:
496: <xsl:template match="doc">
497: param1=<xsl:value-of select="^$param1"/><br/>
498: param2=<xsl:value-of select="^$param2"/><br/>
499:
500: test return <something background=""/>
501: </xsl:template>
502:
503: <xsl:template name="test">
1.81 paf 504: test return3
1.78 paf 505: </xsl:template>
506:
507: <xsl:template match="people">
508: <html>
509: <head>z</head>
510: para1=<xsl:copy-of select="^$param1"/>
511: <xsl:apply-templates/>
512: <hr/>
513: <xsl:call-template name="test"/>
514: </html>
515: </xsl:template>
516:
517: <xsl:template match="name">
518: <b><xsl:value-of select="."/></b>
519: </xsl:template>
520: </xsl:stylesheet>
521: }]
522:
523:
524: $xdoc[^xdoc.transform[$sheet]]
525: $string[^xdoc.string[$.method[html]]]
526: ^string.save[a]
527: ^untaint[html]{$string}
528:
529:
1.77 paf 530:
531: @tnormalize[]
532: #s состоит из 1000 фрагментов
533: $s[^for[i](0;999){фрагмент }]
534: #это займет много ресурсов
535: ^s.match[фраг][g]{перга}
536: #это займет меньше ресурсов
537: #$normalized[^s.normalize[]]
538: #^normalized.match[фраг][g]{перга}
1.74 paf 539:
540: @sendtests[]
1.89 paf 541: ^text[]
1.74 paf 542: #^html[]
543: #^text-n-html[]
544: #^file[]
545: #^text-n-file[]
1.89 paf 546: #^text-n-html-n-file[]
1.74 paf 547: #^backwardcomp[]
548:
549: @backwardcomp[]
550: ^mail:send[
551: $.from[paf]
552: $.to[paf]
553: $.body[this is text value]
554: ]
555:
556: @text[]
557: ^mail:send[
558: $.from[paf]
1.90 paf 559: $.to[paf]
1.74 paf 560: $.text[
561: $.value[this is text value]
562: ]
563: ]
564:
565: @html[]
566: ^mail:send[
567: $.from[paf]
568: $.to[paf]
569: $.html{this is <b>html</b> value ^taint[<] 10}
570: ]
571:
572: @text-n-html[]
573: ^mail:send[
574: $.from[paf]
575: $.to[paf]
576: $.text[
577: $.value[this is text value]
578: ]
579: $.html[
580: $.value{this is <b>html</b> value ^taint[<] 10}
581: ]
582: ]
583:
584: @file[]
585: ^mail:send[
586: $.from[paf]
587: $.to[paf]
588: $.file[^file::load[binary;image.jpg]]
589: ]
590:
591: @text-n-file[]
592: ^mail:send[
593: $.from[paf]
594: $.to[paf]
595: $.text[
596: $.value[this is text value]
597: ]
598: $.file[^file::load[binary;image.jpg]]
599: ]
600:
601: @text-n-html-n-file[]
602: ^mail:send[
603: $.from[paf]
604: $.to[paf]
605: $.text[
606: $.value[this is text value]
607: ]
608: $.html[
609: $.COntent-type[$.value[text/html]$.charset[windows-1251xx]]
610: $.value{this is <b>html</b> value ^taint[<] 10}
611: ]
612: $.file[^file::load[binary;image.jpg]]
613: ]
614:
615:
616:
617: @md5salt[]
618: 1234
619:
620: @cryptdocsample[]
621: $users[^table::create{name password
622: alice ***
623: bob ***
624: }]
625:
626: $htpasswd[^table::create[nameless]{}]
627: ^users.menu{
628: ^htpasswd.append{$users.name:^math:crypt[$users.password;^$apr1^$^md5salt[]]}
629: }
630:
631: ^htpasswd.save[nameless;.htpasswd-parser-test]
632:
1.73 paf 633:
634: @tcrypt[]
1.76 paf 635: #^math:crypt[123;^$apr1^$1234567890abcdef]<br>
636: ^math:crypt[123;^$apr1^$]<br>
1.72 paf 637:
638: @tfilespec[]
639: src=$selffilespec<br>
640: dirname=^file:dirname[$selffilespec]<br>
641: basename=^file:basename[$selffilespec]<br>
642: justname=^file:justname[$selffilespec]<br>
643: justext=^file:justext[$selffilespec]<br>
1.68 paf 644:
645: @datecreatestring3[]
646: $new_after[^date::now(-3)]
647: $articles[^table::create{id title last_update
648: 1 привет 2002-07-03}]
649: ^articles.menu{
650: $last_update[^date::create[$articles.last_update]]
651: <a href=${articles.id}.html>$articles.title</a>
652: ^if($last_update > $new_after){новая}
653: <br>
654: }
1.67 paf 655:
656: @div[]
657: $var(5)
658: ^var.inc(7)
659: ^var.dec(3)
660: ^var.div(4)
661: ^var.mul(2)
662: $var
663:
664:
665: @xdocsave[]
666: $document[^xdoc::create{<?xml version="1.0" encoding="windows-1251" ?>
667: <document>
668: строка1<br/>
669: строка2<br/>
670: </document>}]
671: ^document.save[test.xml]
672:
673: @xdocstring[]
674: $document[^xdoc::create{<?xml version="1.0" encoding="windows-1251" ?>
675: <document>
676: строка1<br/>
677: строка2<br/>
678: </document>}]
679: ^document.string[
680: $.method[html]
681: ]
682:
683:
684: @xdocload[]
685: $document[^xdoc::load[article.xml]]
686: $response:body[^document.file[$.media-type[text/xml]]]
687:
688:
689: @xdoccreatetag[]
690: $document[^xdoc::create[document]]
691: $paraNode[^document.createElement[para]]
692: $dummy[^document.documentElement.appendChild[$paraNode]]
693: $response:body[^document.file[$.media-type[text/xml]]]
694:
695:
696: @xdoccreate[]
697: $document[^xdoc::create{<?xml version="1.0" encoding="windows-1251" ?>
698: <document>
699: текст
700: </document>}]
701: $response:body[^document.file[$.media-type[text/xml]]]
702:
703: @selectBool2[]
704: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
705: <t attr="привет" n="123"/>}]
706: ^if(^d.selectBool[/t/@n > 10]){
707: /t/@n больше 10
708: }{
709: не больше
710: }
711:
712:
713: @selectNumber2[]
714: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
715: <t attr="привет" n="123"/>}]
716: ^d.selectNumber[number(/t/@n)+1]<br>
717: ^d.selectNumber[2*2]<br>
718:
719:
720: @selectString2[]
721: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
722: <t attr="привет" n="123"/>}]
723: # результат=привет
724: ^d.selectString[string(t/@attr)]
725:
726:
727: @selectSingle2[]
728: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
729: <t attr="привет" n="123"/>}]
730: # результат=один элемент "t"
731: $element[^d.selectSingle[t]]
732: # результат=2 (количество атрибутов <t>)
733: Количество атрибутов: ^element.attributes._count[]<br>
734: # результат=не существует (нет <x>)
735: ^if(^d.select[x]){
736: x существует
737: }{
738: x не существует
739: }
740:
741: @select2[]
742: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><t attr="привет" n="123"/>}]
743: # результат: список из одного элемента "t"
744: $list[^d.select[t]]
745: # результат: 2 = количество атрибутов <t>
746: ^list.0.attributes._count[]<br>
747: ^for[i](0;$list-1){
748: $attr[$list.$i]
749: $attr.nodeName = $attr.nodeType<br>
750: }
751:
752:
753: @selectt[]
754: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><t attr="привет" n="123"/>}]
755: $list[^d.select[t]]
756: ^list.0.attributes._count[]
1.65 paf 757:
758: @envt[]
1.66 paf 759: $f[^file::exec[showenv.cmd;
760: $.bad[value]
761: $.CGI_good[value]
762: ]]
1.65 paf 763: $f.status<br>
764: $f.stderr<br>
765: <pre>$f.text</pre>
766:
1.63 paf 767:
768: @tserge[]
1.64 paf 769: ^if(" 09 "){y}
1.61 paf 770:
771: @datetest[]
772: $f[^file::stat[some.zip]]
773: Размер в байтах: $f.size<br>
774: Год создания: $f.cdate.year<br>
775: $now[^date::now[]]
776: $DAYS_CONSIDERED_NEW(3)
777: Статус: ^if($f.mdate >= $now-$DAYS_CONSIDERED_NEW){новый;старый}
778:
1.60 paf 779:
780: @checkList[]
781: ...^oneOf[a;a,b,c]...<br>
782: #...^oneOf[a;ax,b,c]...<br>
783: ...^oneWord[word]...<br>
784: #...^oneWord[wo rd]...<br>
785:
786:
787: @oneOf[s;list][t] выдаёт строку, если строка она есть в списке(разделенном запятыми)
788: $t[^list.lsplit[,]]
789: ^if(!^t.locate[piece;$s]){^throw[user;$s;unknown]}
790: $result[$s]
791:
792: @oneWord[s]
793: ^if(^s.match[\W]){^throw[user.data;$s;not word]}{$s}
1.59 paf 794:
795: @pngsize[]
796: $i[^image::measure[test.png]]
797: ^i.html[]
798:
799:
800: @forkeys[]
801: $text[^form:fields.foreach[key;val]{$key=$val
802: }]
803: ^text.save[ttt.txt]
804: =$text=
805:
806:
807: @tstoredproc2[]
808: ^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{
809: ^void:sql{exec pafvoid}
810: }
811:
812: @tstoredproc[]
813: ^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{
814: $t[^table::sql{exec pafproc}]
815: # $t[^table::sql{{call pafproc}}]
816: $c[^t.columns[]]
817: ^c.menu{$c.column}[<br>]
818: }
1.57 paf 819:
820: @datecreatestring2[]
1.58 paf 821: <table border=1>
822: ^datecreatestring2show[2000]
823: ^datecreatestring2show[2000-02]
1.59 paf 824: ^datecreatestring2show[2000-2-03]
1.58 paf 825: ^datecreatestring2show[2000-02-03 15]
826: ^datecreatestring2show[2000-02-03 15:30]
827: ^datecreatestring2show[2000-02-03 15:30:04]
828: ^datecreatestring2show[2000-02-03 15:30:04 hren]
829: ^datecreatestring2show[15:30]
830: ^datecreatestring2show[15:30:05]
831: ^datecreatestring2show[15:30:05 hren]
832: </table>
833:
834: @datecreatestring2show[s]
835: $date[^date::create[$s]]
836: <tr>
837: <td>$s</td><td align=right>^date.sql-string[]</td>
838: </tr>
839:
1.57 paf 840:
841: @junctionprob[][l]
842: $l[123]
843: $a{$l}
844: ^junctionprobnested[$a]
845: @junctionprobnested[p]
846: $p
847:
848:
849: @callindirecttarget[]
850: callindirecttarget called
851: @callindirect[]
852: $f[$callindirecttarget]
853: ^f[]
854:
855: @xpath2[]
856: $xdoc[^xdoc::create{<?xml version="1.0" encoding="windows-1251"?>
857: <doc>
858: <field-list>
859: <field name="aa"/>
860: <field name="bb"/>
861: </field-list>
862: </doc>
863: }]
864:
865: #^xdoc.string[]
866:
867: $fieldList[^xdoc.selectSingle[/doc/field-list]]
868: #^fieldList.childNodes._count[]
869: $fields[^fieldList.select[field]]
870: #^fields._count[]
871: ^fields.foreach[k;node]{
872: $node.nodeName<br>
873: }
874: @counter[filespec][f;s]
875: ^file:lock[$filespec]{
876: $f[^file::load[text;$filespec]]
877: $s[^eval($f.text+1)]
878: ^s.save[$filespec]
879: }
880: $s
1.56 paf 881:
882: @xmlspace[]
883: $xdoc[^xdoc::set{^process{<?xml version="1.0" encoding="windows-1251"?>
884: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
885: <people>
886: <man id="1" имя="word слово">
887: <name>1 2</name>
888: </man>
889: </people>
890: }}]
891: $xdoc[^xdoc.transform[global.xsl]]
892: $string[^xdoc.string[$.method[html]]]
893: ^string.save[a]
894: ^untaint[html]{$string}
895:
896: @badthrows[]
897: #^throw[a;b;]
898: ^throw[a;]
1.54 paf 899:
900: @mssqltypes1[]
901: ^connect[odbc://DSN=nestle^;UID=nestle^;PWD=mbm32]{
1.55 paf 902: # ^string:sql{select { ts '1998-05-02 01:23:56.123' }}
903: # ^string:sql{select CAST({ ts '1998-05-02 01:23:56.123' }AS smalldatetime)}
904: # ^string:sql{select CAST({ts '2002-04-28 00:00:00.000'} AS smalldatetime)}
905: $t[^table::sql{select a from paf}]
906: ^t.count[]
1.54 paf 907: }
1.51 paf 908:
1.53 paf 909: @datecreatestring[]
1.54 paf 910: $d[^date::create[2002-04-33 01:03:04]]
1.53 paf 911: ^d.sql-string[]
1.52 paf 912:
913: @method[hash]
914: $hash.key
915: @mainZ[]
916: ^method[
917: $.key{code}
918: ]
919:
1.51 paf 920: @tablehasht[]
921: $t[^table::create{p
922: 1
923: 3
924: 2
925: 4}]
926:
927: $h[^t.hash[p]]
928:
929: =^h._count[]=
930:
931:
932: @sqldefaults[]
933: ^connect[mysql://mdm:4b833ljq@db-mysql/mdm]{
934: ^int:sql{select news_id from news where news_id=-1}[$.default{2}]<br>
935: ^string:sql{select news_id from news where news_id=-1}[$.default{2}]
936: }
1.60 paf 937: =======
938: <hr>
939: OK
940: >>>>>>> 1.50
1.48 paf 941:
942: @tcrashlocaljunctionsv2[]
943: $a[
944: $b{ $c[1] }
945: ]
946: $b
947: $c
948:
949: @tcrashlocaljunctions[]
950: $var[aaa]
951: ^if(1){
952: ^tcrashlocaljunctions1[]
953: }
954:
955: $j
956:
1.49 paf 957: @tcrashlocaljunctions1[][var]
958: $var[varvalue]
1.48 paf 959: $j{
960: $var
961: }
1.49 paf 962: $j
1.48 paf 963:
964: @tjunctions[][tl]
965: $t[^t::create[]]
966: ^tjunctionsi[]
967:
968: @tjunctionsi[][tl]
969: $tl[12345]
970: ^t.tjunctionsm[
971: $.key{
972: $tl
973: }
974: ]
1.46 paf 975:
1.47 paf 976: @replacetest[]
977: $b[b]
978: $s[
979: aaaaaaaaaa${b}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
980: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa${b}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
981: ]
982: ^s.replace[^table::create{from to
983: ba !_}]
984:
985:
1.46 paf 986: @matchoptionpp[]
1.47 paf 987: #$ORIGINS(1)
1.46 paf 988: $s[
989: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1.47 paf 990: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
991: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
992: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
993: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
994: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
995: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
996: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
997: aaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
998: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1.46 paf 999: ]
1000: ^s.match[b;g']{($match.prematch|$match.match|$match.postmatch)}
1001:
1.44 paf 1002:
1003: @txdocxnodechild[]
1004: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?><d/>}]
1005: $xdoc.nodeName
1006: ^xdoc.selectNumber[2*2]
1.45 paf 1007: $xdoc:ELEMENT_NODE
1.44 paf 1008:
1009:
1010: @tclasses[]
1011: $t[^t::create[]]
1012: ^t.method[]
1013: <hr>
1014: ^t.base_method[]
1015:
1.40 paf 1016:
1017: @errort[]
1.42 paf 1018: ^xdoc::create[a]
1.40 paf 1019: #^throw[user;here;this]
1020:
1021: @tselectNumber[]
1022: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d attr="привет" n="123"/>}]
1023: ^d.selectString[string(d/@attr)]<br>
1024: ^d.selectNumber[2*2]<br>
1025: ^d.selectNumber[number(/d/@n)+1]<br>
1026:
1.34 paf 1027:
1.36 paf 1028: @invaliddate2[]
1029: $d[^date::create(1018946575/60/60)] ^d.sql-string[]
1030:
1031: @process2[]
1032: ^^process{
1033: ^process{
1034: ^$a[^^if(0){^$.k[y]}{^$.k[^^hren[]n]}] ^$a.k
1035: }
1036: }
1037:
1.35 paf 1038: @casehashtext[]
1039: $tt[1]
1040: $tmp[
1041: ^switch[$tt]{
1042: ^case[1]{
1043: $.aaa[123]
1044: }
1045: ^case[DEFAULT]{
1046: $.bbb[456]
1047: }
1048: }
1.36 paf 1049: shit!
1.35 paf 1050: ]
1.36 paf 1051: #$tmp
1.35 paf 1052: $tmp.aaa
1053:
1054: @subjvaltest[]
1055: $a12[val]
1056: $b[12]
1057: $a$b
1058:
1.34 paf 1059: @tableselect0[]
1060: $person[^table::create{name height
1061: paf 1.77
1062: шохин 2.07
1063: moko 1.77
1064: }]
1065: $nottoohigh[^person.select($person.height<2)]
1066: ^nottoohigh.menu{$nottoohigh.name<br>}
1.32 paf 1067:
1068: @transparams[]
1069: $idoc[^xdoc::create{<?xml version="1.0" ?><doc/>}]
1070: $odoc[^idoc.transform[global.xsl;
1071: $.param1['1']
1072: $.param2['2']
1073: ]]
1074: <pre>^taint[^odoc.string[$.method[html]]]
1075:
1076: @memnotest1[]
1077: ^for[i](0;4000){
1078:
1079: $xxxx[$i]
1080: $xxxx
1081:
1082: }
1083:
1084: @memnotest1notes[]
1085: одна итерация цикла:
1086: [Mon Apr 8 20:12:02 2002] execution-------------------------|
1.35 paf 1087: '469641+=28 wcodeframe -> 0 !optimize[3]''469669+=49 string от {} -> 0 optimize[3]'
1.32 paf 1088: [Mon Apr 8 20:12:02 2002] 12:STRING__WRITE
1089: [Mon Apr 8 20:12:02 2002] "|| "
1090: [Mon Apr 8 20:12:02 2002] 12:WITH_ROOT
1091: [Mon Apr 8 20:12:02 2002] 13:VALUE
1092: [Mon Apr 8 20:12:02 2002] "xxxx" string
1.35 paf 1093: [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 1094: [Mon Apr 8 20:12:02 2002] 16:WITH_READ
1095: [Mon Apr 8 20:12:02 2002] 17:VALUE
1096: [Mon Apr 8 20:12:02 2002] "i" string
1097: [Mon Apr 8 20:12:02 2002] 18:GET_ELEMENT
1.35 paf 1098: [Mon Apr 8 20:12:02 2002] 17:WRITE_VALUE'469452+=40 MAX_NUMBER -> !~2 actual digits''469492+=49 -> 41 !'
1099: [Mon Apr 8 20:12:02 2002] 16:REDUCE_EWPOOL'469541+=24 VString -> 0 optimize[5]'
1.32 paf 1100: [Mon Apr 8 20:12:02 2002] 15:CONSTRUCT_VALUE
1101: [Mon Apr 8 20:12:02 2002] 12:STRING__WRITE
1102: [Mon Apr 8 20:12:02 2002] "| "
1103: [Mon Apr 8 20:12:02 2002] 12:WITH_READ
1104: [Mon Apr 8 20:12:02 2002] 13:VALUE
1105: [Mon Apr 8 20:12:02 2002] "xxxx" string
1106: [Mon Apr 8 20:12:02 2002] 14:GET_ELEMENT
1107: [Mon Apr 8 20:12:02 2002] 13:WRITE_VALUE'469573+=41 string expand nothing for now'
1108: [Mon Apr 8 20:12:02 2002] 12:STRING__WRITE
1.35 paf 1109: [Mon Apr 8 20:12:02 2002] "||"'469617+=24 VString -> 0 !optimize[6]'
1.32 paf 1110: [Mon Apr 8 20:12:02 2002] <-ja returned
1111: [Mon Apr 8 20:12:02 2002] ja->
1112:
1113: 201/328=0.612804878049 %%optimized
1114:
1115: 1.
1116: CREATE_*POOL
1117: сделать
1118: *POOL_POOLED+CODE
1119: где
1120: wwrapper
1121: и(возможно) wcodeframe
1122: +string
1123: стековая переменная
1124:
1125: 2.
1126: избавиться от обёртки при возврате результата process [см. тело _for]
1127:
1128: 3.
1129: сделать callback для process, чтобы вынести invariants из _for & co.
1130:
1131: 4.
1132: @todo склеить get_element и write_value (при вставлении? write_value)
1133:
1134: 5.
1135: reduce_*pool -> вариант получить именно string, без VString обёртки [часто
1136: обёртка сразу выбрасывается = не нужна]
1137:
1138: 6.
1139: process вариант получить именно string, без VString обёртки [часто обёртка
1140: сразу выбрасывается = не нужна]
1141:
1142: 7.
1143: string head, убить 8 байт неправильной link
1.31 paf 1144:
1145: @voidparams[]
1146: ^voidparamsm[$form:field]
1147:
1148: @voidparamsm[p]
1149: ^p.int(123)
1.29 paf 1150:
1.30 paf 1151: @rolls2[]
1152: $now[^date::now[]]
1153: $d[^date::create($now.year;$now.month)] ^d.sql-string[]<br>
1154: ^for[i](1;12){
1155: ^d.roll[month](-1) ^d.sql-string[]<br>
1156: }
1157:
1.29 paf 1158: @cacheexpireschanging[]
1159: ^cache[$DB_HOME/keyключ][^date::now(+1)]{ ^rem{1 day}
1160: ^cache[^date::now(+4/24/60/60)]
1161: # ^cache(2)
1.30 paf 1162: # ^cache(0)
1.29 paf 1163: ^math:random(100)
1164: }
1165:
1166:
1167:
1168: @cacheexpiresfixed[]
1169: ^cache[$DB_HOME/keyключ][^date::now(+2/24/60/60)]{
1170: ^math:random(100)
1171: }
1172:
1173: @dateoffsets[]
1174: $d[^date::create(^date::now[]+1/24/60)]
1175: #$d[^date::now(+1/24/60)]
1176: ^d.sql-string[]
1177: #$d
1.26 paf 1178:
1.28 paf 1179: @exceptionTypes[]
1180: # parser.compile ^test[} компиляция (непарная скобка, ...)
1181: # parser.runtime ^if(0). параметры (больше/меньше, чем нужно, не тех типов, ...)
1182: # number.zerodivision ^eval(1/0) ^eval(1%0)
1183: # number.format ^eval(abc*5)
1184: # file.missing ^file:delete[delme] not found
1185: # file.access ^table::load[.] no rights
1186: # image.format ^image::measure[index.html] not gif/jpg
1187: # sql.connect ^connect[mysql://baduser:pass@host/db]{} not found/timeout
1188: # sql.execute ^connect[mysql://okuser:pass@host/db]{^void:sql{select bad}} syntax error
1189: # xml ^xdoc::create{<forgot?>} any error in xml/xslt libs
1190: # smtp.connect not found/timeout
1191: # smtp.execute communication error
1192:
1.26 paf 1193: @roll2[]
1194: $d[^date::create(2002;4;2;2;2;3)] ^d.sql-string[]<br>
1.27 paf 1195: ^d.roll[day](+365*3+1) ^d.sql-string[]<br>
1.26 paf 1196:
1.25 paf 1197:
1198: @rolls[]
1199: $d[^date::create(2002;4;4)]
1200: ^d.sql-string[]<br>
1201: ^for[i](1;7){
1202: ^d.roll[day](-1)
1203: ^d.sql-string[]<br>
1204: }
1205: <hr>
1206: $d[^date::create(2002;3;28)]
1207: ^d.sql-string[]<br>
1208: ^for[i](1;7){
1209: ^d.roll[day](+1)
1210: ^d.sql-string[]<br>
1211: }
1212: <hr>
1213: $d[^date::create(2002;12;3)]
1214: ^d.sql-string[]<br>
1215: ^for[i](1;14){
1216: ^d.roll[day](-1)
1217: ^d.sql-string[]<br>
1218: }
1219: <hr>
1220: $d[^date::create(2002;10;19)]
1221: ^d.sql-string[]<br>
1222: ^for[i](1;14){
1223: ^d.roll[day](+1)
1224: ^d.sql-string[]<br>
1225: }
1226:
1227:
1228:
1229:
1230:
1.22 paf 1231:
1232: @exceptions1[]
1233: ^try{
1234: aaa
1.24 paf 1235: ^throw[custom1;paf;is stupid]
1.22 paf 1236: }{
1.24 paf 1237: ^if($exception.type eq custom1){
1.28 paf 1238: # $exception.handled(1)
1239: ^throw[$exception]
1.24 paf 1240: type=$exception.type<br>
1241: source=$exception.source<br>
1242: file=$exception.file<br>
1243: lineno=$exception.lineno<br>
1244: comment=$exception.comment<br>
1245: }
1.22 paf 1246: }
1.21 paf 1247:
1248: @locate_by_expr[]
1249: $t[^table::create{a b
1250: 1 nok
1251: 2 ok
1252: 3 nok
1253: }]
1254: ^if(^t.locate($t.a==2)){$t.b}{n}
1.17 paf 1255:
1256: @method_junction_params[param]
1257: ^if($param is junction){junction}{ne junction}
1258:
1259: @verifyCookie[value]
1260: ^if($cookie:dummyvote eq $value){
1261: $result(1)
1262: }{
1263: $cookie:dummyvote[$value]
1264: $result(0)
1265: }
1.16 paf 1266:
1267: @execlangs[]
1.20 paf 1268: $f[^file::exec[test.pl]]
1.36 paf 1269: err:$f.stderr<br>
1.16 paf 1270: ^process{$f.text}
1271: #$c[^t.columns[]]
1272: #^c.menu{
1273: #* $c.column<br>
1274: #}
1.36 paf 1275: c:$t.c<br>
1.16 paf 1276:
1277: @tobjeresult[]
1278: ^table::create{a
1279: 12}
1.15 paf 1280:
1281: @xmlprobs[]
1282: $xmlDataType[^xdoc::load[program.xml]]
1283: #<pre>^taint[^xmlDataType.string[]]
1284: $xmlDataTypes[^xmlDataType.select[programs/program[@id=4]/data]]
1285: #=^xmlDataTypes._count[]=
1286: =^xmlDataTypes.0.getAttribute[type-id]=
1287:
1288: @doubleprobs[]
1289: $1(^math:radians(180))
1290: $2($math:PI)
1291: ^if(^1.format[%.10f]==^2.format[%.10f]){y;n}
1292: ^if($1==$2){y;n}
1293: ^if(^math:radians(180)==$math:PI){y;n}
1294:
1295:
1296: @divnamestop[]
1297: $a(10)
1298: ^eval($a\3)
1299:
1300: @arrayclone[]
1301: $t[^table::create{a b
1302: 1 11
1303: 2 22
1304: }]
1305: $c[^table::create[$t]]
1306: ^c.append{2 33}
1307: ^t.count[]
1308: ^c.count[]
1309:
1310: @operator_tricks[]
1311: ^if(1){$a[^t[]]}
1312: $a!
1313: $a($b)
1314: ^if(1){y}{n}
1315: $MAIN:a(^t[] eq OK)
1316: #$MAIN:a(1)
1317: ^if($a){y}{n}
1318: #^if(1){y}{n}
1319: $form:if
1320: $a[$.n[1]]
1321: $a.if
1322:
1323: @xoutputrusattr[]
1324: $d[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?><d attr="привет"/>}]
1325: ^show_xdoc2[$d]
1326:
1327: @xdocset1[]
1328: $d[^xdoc::set{<?xml version="1.0"?><d>=^taint[&]=</d>}]
1329: ^show_xdoc2[$d]
1330:
1331: @regexp3[]
1332: $s[abcАБВ]
1333: ^if(^s.match[][i]){y}{n}
1334:
1335:
1336: @exec2[]
1337: $a[^file::exec[bin/t.cmd]]
1338: <pre>^taint[$a.text]</pre>|$a.status|$a.stderr<hr>
1339:
1340:
1341: @tlock[]
1342: ^file:lock[lockfile]{
1343: code
1344: }
1345:
1346: @xmloutattrwithoutvalue[]
1347: #$ORIGINS(1)
1348: $doc[^xdoc::set{<?xml version="1.0"?><doc background="">zz</doc>}]
1349: $doc[^doc.transform[global.xsl]]
1350: =^taint[html][^doc.string[$.method[html]]]=
1351:
1352:
1353:
1354: @precisionProblem[]
1355: $a[123456789012345678901234567890]
1356: $b(^a.double[])
1357: ^b.format{%.20E}
1358: <hr>
1359: ^eval(2*2)
1360:
1361: @xpath[]
1362: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
1363: <document><block><p>привет</p></block></document>
1364: }]
1365: #^show_xdoc2[$xdoc]
1366: $node[^xdoc.selectSingle[/document/block/p]]
1367: ^if(def $node){
1368: ^if($node is string){
1369: $node
1370: }{
1371: ^if($node is hash){
1372: ^node._count[]
1373: }{
1374: $node.nodeType
1375: }
1376: }
1377: #$node.firstChild.nodeValue
1378: }{
1379: node not found
1380: }
1381:
1382:
1383: @ttablesetlang[]
1384: $a-tab-b[a b
1385: 1 2]
1386:
1387: $t[^table::set{$a-tab-b}]
1388: =$t.a=
1389: <hr>
1390:
1391: $t[^table::set[nameless]{^taint[$a-tab-b]}]
1392: =$t.0=
1393: <hr>
1394:
1395: $t[^table::set{^untaint{^taint[$a-tab-b]}}]
1396: =$t.a=
1397:
1398: #^t.append{1 2}
1399:
1400: @mail3[]
1401: ^mail:send[
1.98 paf 1402: $.from[Александр Петросян <paf@mail.design.ru>]
1403: $.to[Александр Петросян <paf@mail.design.ru>]
1404: $.subject[проверка2]
1.15 paf 1405: $.body[
1406: $.text[
1407: $.content-type[$.value[text/plain] $.charset[windows-1251]]
1.98 paf 1408: $.body[проверка^taint[uri][москва]=]
1.15 paf 1409: ]
1410: $.attachment[
1411: $.value[^file::load[text;index.html]]
1412: $.file-name[привет всем.html]
1413: ]
1414: ]
1415: ]
1416:
1417:
1418: @ttime[]
1419: $now[^date::now[]]
1420: $now.hour:$now.minute
1421:
1422: @tupper[]
1423: $t[abcABCабвАБВ]
1424: $t<br>
1425: ^t.upper[]
1426:
1427: @treplace[]
1428: $copy-paste-clean[^table::set{a b
1429: . _
1430: , _
1431: + _
1432: & _
1433: ? _
1434: = _}]
1435:
1436: $cache_key[^taint[в.а,с+я]&был?тут=недавно.cache]
1437: # почему-то этот replace роняет апач в 500 ошибку :(
1438: #^cache_key.replace[$copy-paste-clean]
1439: $test[abc]
1440: ^test.save[$cache_key]saved<br>
1441: $cache[^file:list[.;\.cache^$]]
1442: ^file:delete[$cache_key]deleted($cache.name)<br>
1443:
1444:
1445:
1446: @xslt2[]
1447: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
1448: <document><block><p>привет</p></block></document>
1449: }]
1450: ^show_xdoc2[$xdoc]
1451: ^show_xdoc2[^xdoc.transform[templates/_document.xslt]]
1452: <hr>
1453:
1454:
1455: @tcache2[]
1456: ^cache[$DB_HOME/keyключ](2){
1457: ^math:random(100)
1458: }
1459:
1460: @ttaintuntaint[]
1461: <!-- некий панковский заголовок с буковкой C в круглых скобках -->^taint[html][
1462:
1463: ]zz
1464: <hr>
1465: ^untaint[html]{1^taint[ ]2 3}
1466:
1467:
1468: @tappend2[]
1469: $t[^table::set{a b}]^t.append{1 2}$t.a
1470:
1471: @badvsnprintf[]
1472: ^connect[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz]{
1473: }
1474:
1475:
1476: @badoracequoting[]
1477: $SQL.connect-string[oracle://webspb:webpwd@mts?NLS_LANG=RUSSIAN_AMERICA.CL8MSWIN1251&NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS]
1478: ^connect[$SQL.connect-string]{
1479: ^void:sql{delete from paf}
1480: ^void:sql{insert into paf values (1, '$form:text')}
1481: $paf[^table::sql{select * from paf}]
1482: ^paf.menu{
1483: $paf.id: ^untaint{$paf.block}<hr>
1484:
1485: }
1486: <hr>
1487:
1488:
1489: ^rem{
1490: $news[^table::sql{select description from news}[$.limit(3)]]
1491: ^news.menu{
1492: ^untaint{$news.description}<hr>
1493:
1494: }
1495: <hr>
1496: }
1497:
1498: $tables[^table::sql{select table_name from user_tables}]
1499: ^tables.menu{
1500: $tables.table_name<br>
1501: }
1502:
1503: }
1504: <hr>
1505: $env:PATH
1506:
1507: @badconstructors[]
1508: $bred[^string::length[]]
1509: $bred[^response::clear[]]
1510: $bred[^int::int[]]
1511:
1512:
1513: @xloadwrongtable[]
1514: $constr[^xdoc::load[wrongtable.xml]]
1515: ^show_xdoc2[$constr]
1516:
1517: @xsetwrongtable[]
1518: $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251z" ?>
1519: <block-list>^untaint[as-is]{$constructor}</block-list>}]
1520:
1521:
1522: @tablecolumnerror[]
1523: $t[^table::set{a}]
1524: $t.$a
1525:
1526: @roll[]
1527: #$date[^date::set(1970;1;2)]
1528: #^date.roll[month](-1)
1529: $date[^date::set(2038;1;1)]
1530: ^date.roll[month](+1)
1531: $date.year $date.month $date.day
1532:
1533: @cookie2[]
1534: #=$cookie:clientType[$.value[test]]=<br>
1535: =$cookie:clientType=<br>
1536:
1537:
1538: @tableset[]
1539: $a[^table::set{a
1540: 1
1541: 2}]
1542: ^eval(100\$a)
1543:
1544:
1545:
1546: @zzz[]
1547:
1548:
1549: $constructor[
1550: <block1 name="main_srvr" type="0" label="Основное тело" />
1551: <block2 name="main_srvr2" type="0" label="Основное тело" />
1552: ]
1553:
1554: $constr[^xdoc::set{<?xml version="1.0" encoding="windows-1251" ?>
1555: <block-list>^untaint[as-is]{$constructor}</block-list>}]
1556:
1557: $children[$constr.documentElement.childNodes]
1558: ^if($children){
1559: ^for[i](1;^children._count[]){
1560: $node[$children.$i]
1561: $node.nodeName<br>
1562: }
1563: }
1564:
1565:
1566: @thashforeach3[]
1567: $h[
1568: $.a[1]
1569: $.b[2]
1570: ]
1571: $c[^table::set{a
1572: ^h.foreach[key;value]{$value
1573: }}]
1574: $c.a
1575:
1576: @thashforeach2[]
1577: $h[
1578: $.a[1]
1579: $.b[2]
1580: ]
1581: $c[
1582: ^h.foreach[key;value]{
1583: $.$key[$value]
1584: }
1585: ]
1586: $c.b
1587:
1588: @thashforeach[]
1589: $h[
1590: $.a[1]
1591: $.b[2]
1592: ]
1593: ^h.foreach[key;value]{
1594: $key=$value<br>
1595: }
1596:
1597: @thashdelete[]
1598: $h[$.a[1] $.b[2]]
1599: was:<br>
1600: count=^h._count[] <br>
1601: b='$h.b' <br>
1602:
1603: ^h.delete[b]
1604:
1605: now:<br>
1606: count=^h._count[] <br>
1607: b='$h.b'
1608:
1609: @sappend[]
1610: $test[123]
1611: ^test.save[test]
1612: ^test.save[append;test]
1613:
1614: @tappend[]
1615: $test[^table::set{a b
1616: a1 b1}]
1617: ^test.save[test]
1618: $test[^table::set{a b
1619: a2 b2}]
1620: ^test.save[append;test]
1621:
1622:
1623: @tform[]
1624: ^if(def $form:new_file){y}{n}
1625: <form method="post" enctype="multipart/form-data">
1626: <input type="file" name="new_file" />
1627: <input type=submit>
1628: </input>
1629:
1630: @formattest[]
1631: $size(15.124)
1632:
1633: ^size.format{%.2f}
1634:
1635: @filelist[]
1636: $html[^file:list[.;\.html^$]]
1637: ^html.menu{
1638: $html.name<br>
1639: }
1640: <hr>
1641:
1642: @безнадёжна_попытка_поправить_непоправимое[]
1643: $dom_from_disk[^xdoc::load[input.xml]]
1644: $dom_created_in_air[^xdoc::create[doc]]
1645: ^dom_created_in_air.documentElement.appendChild[^dom_from_disk.documentElement.cloneNode(1)]
1646: ^show_xdoc2[$dom_created_in_air]
1647:
1648:
1649: @tcache[]
1650: #^hashfile:clear[cache]
1651: $code[^hashfile::open[$DB_HOME;cache]]
1652: ^code.cache[key](2){
1653: ^math:random(100)
1654: # ^code.delete[]
1655: }
1656:
1657: @thashfileexp[]
1658: $hf[^hashfile::open[$DB_HOME;hashfile]]
1659: $hf.paf[$.value[крут] $.expires(3)]
1660: paf=$hf.paf
1661: <hr>
1662: ^hf.foreach[key;value]{
1663: $key=$value<br>
1664: }
1665: <hr>
1666: $hash[^hf.hash[]]
1667: =$hash.paf=
1668: <hr>
1669:
1670: @tcounter[]
1671: ^tcounterone[$DB_HOME]
1672: other root:
1673: ^tcounterone[${DB_HOME}2]
1674: again, first:
1675: ^tcounterone[$DB_HOME]
1676:
1677: @tcounterone[DB_HOME]
1678: $counter[^hashfile::open[$DB_HOME;counter]]
1679: #^counter.clear[]
1680: ^counter.transaction{
1681: # $counter.value(10)
1682: $counter.value($counter.value+1)
1683: # ^counter.delete[value]
1684: $counter.value
1685: }
1686: <hr>
1687: ^rem{
1688: $hash[^counter.hash[]]
1689: =$hash.value=
1690: <hr>
1691: }
1692:
1693: @tablehash[]
1694: $productList[^table::set{id name
1695: 1 носки
1696: 2 валенки
1697: 3 ушанка
1698: }]
1699:
1700: #скажем, у первого дилера
1701: $firstPriceList[^table::set{id price
1702: 1 0.3
1703: 3 1000
1704: }]
1705:
1706: $firstPriceHash[^firstPriceList.hash[id]]
1707:
1708: ^productList.menu{
1709: продукт "$productList.name" | цена у first: $firstPriceHash.[$productList.id].price<br>
1710: }
1711:
1712:
1713: @hashfile[]
1714: $hf[^hashfile::assign[hashfile]]
1715: #$hf.paf[крут5]
1716: paf=$hf.paf
1717:
1718: @formclass[]
1719: ^$form:CLASS.a=$form:CLASS.a
1720:
1721: @domdata[]
1722: ^if(1){
1723: # $a{^hren[]}
1724: }
1725: $a
1726: $xdoc[^xdoc::create[doc]]
1727: $doc[$xdoc.documentElement]
1728: $name[^doc.appendChild[^xdoc.createElement[name]]]
1729: $text[^name.appendChild[^xdoc.createTextNode[петросян&coz]]]
1730: ^untaint[as-is]{=$text.nodeValue=}
1731:
1732: @domedit[]
1733: ^domdata[]
1734: #$paf.nodeName<br>
1735: #$doc.documentElement.nodeName<br>
1736:
1737: ^show_xnode1[$xdoc.documentElement;0;1]
1738: <hr>
1739: ^show_xdoc2[$xdoc]
1740: <hr>
1741:
1742: @domxslt[]
1743: ^domdata[]
1744: ^show_xdoc2[^xdoc.transform[global.xsl;$.param1[123/]]]
1745: <hr>
1746:
1747: @lsplit2[]
1748: $path[/optics/]
1749: $pathTable[^path.lsplit[/]]
1750: ^pathTable.menu{
1751: ^if(def $pathTable.piece){
1752: =$pathTable.piece=
1753: }
1754: }
1755:
1756:
1757: @faceesize[]
1758: $k(2)
1759: $pict[^image::load[paf.gif]]
1760: $small[^image::create($pict.width/$k;$pict.height/$k)]
1761: ^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;250)
1762: $response:body[^small.gif[]]
1763:
1764: @imageresize[]
1765: $k(2)
1766: $pict[^image::create(400*$k;200*$k)]
1767: $pict.line-width(2)
1768: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)
1769: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-20;$pict.height-20;0+20;360-20;0xff0000)
1770: #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)
1771: ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-20;0x0000ff)
1772: ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+20;360-20;0xff0000)
1773: $response:body[^pict.gif[]]
1774:
1775: #$small[^image::create($pict.width/$k;$pict.height/$k)]
1776: #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0)
1777: #^small.copy[$pict](0;0;$pict.width;$pict.height;0;0;$small.width;$small.height;0)
1778:
1779: #$response:body[^small.gif[]]
1780:
1781:
1782: @tintdefault[]
1783: #$abc[abc]
1784: $abc[33]
1785: ^abc.int[z]
1786: #^abc.int(123)
1787:
1788: @ifassignhash[]
1789: $h[^if(1){$.a(1);$.a(2)}]
1790: $h.a
1791:
1792: @ifpasshash[]
1793: $a[$.e[a]]
1794: $b[$.e[b]]
1795: ^ifpasshashdest[^if(1){$a;$b}]
1796: #$x[^if(1){$a}{$b}]
1797: #^ifpasshashdest[$x]
1798:
1799: @ifpasshashdest[p]
1800: $p.e
1801:
1802: @movedir[]
1803: ^file:move[a;deeper/a]
1804:
1805: @replace[]
1806: $a[12^;3]
1807: ^a.replace[^table::set{from to
1808: 2^; !
1809: }]
1810:
1811:
1812: @set[]
1813: ^setdata[]
1814: ^a.add[$b]
1815: add:$a.3<br>
1816:
1817: ^setdata[]
1818: ^a.sub[$b]
1819: sub2:$a.2<br>
1820: sub1:$a.1<br>
1821:
1822: ^setdata[]
1823: $c[^a.union[$b]]
1824: union3:$c.3<br>
1825: union2:$c.2<br>
1826:
1827: ^setdata[]
1828: $c[^a.intersection[$b]]
1829: intersection3:$c.3<br>
1830: intersection2:$c.2<br>
1831:
1832: ^setdata[]
1833: intersects:^if(^a.intersects[$b]){y;n}<br>
1834: intersects2:^if(^a.intersects[ ]){y;n}<br>
1835:
1836:
1837: <hr>
1838:
1839: @setdata[]
1840: $a[$.1[a1] $.2[a2]]
1841: $b[ $.2[b2] $.3[b3]]
1842:
1843:
1844: @hash[]
1845: $h[^hash::create[$._default[123]]]
1846: $h.paf[not kretin]
1847: $h.paf<br>
1848: =$h.that=<br>
1849:
1850: @methresult[]
1851: $result[^table::set{1}]
1852:
1853: @terror[]
1854: ^error[method z must be called with z]
1855:
1856: @syntax1[]
1857: #^a[^b]
1858:
1859: @syntax2[]
1860: #^a[
1861:
1862: @ssave[]
1863: $abc[abc]
1864: ^abc.save[abc]
1865:
1866: @calendar[]
1.103 paf 1867: $year(2002)
1868: $month(12)
1.84 paf 1869: ${year}-${month}:<br>
1870: $week_days[^date:calendar[rus]($year;$month)]
1.15 paf 1871: <pre>
1.101 paf 1872: ^week_days.menu{^for[wday](0;6){^if($week_days.$wday){$week_days.$wday; ^; ^;} }=$week_days.week,$week_days.year=<br>}
1.15 paf 1873: </pre>
1874:
1875: @thash[]
1876: $table[^table::set{id name age
1877: 1 paf 278
1878: 2 пиф 234
1879: }]
1880: $hash[^table.hash[id;^table::set[nameless]{id
1881: name}]]
1882: $hash.2.id $hash.2.name $hash.2.age
1883:
1884: @tdef[]
1885: $s[0]
1886: if 0=^if($s){}{n}<br>
1887: if def 0=^if(def $s){y}{}<br>
1888: <hr>
1889:
1890: @ford[]
1891: ^for[i](0;5){$i}{($i)}
1892:
1893: @tif[]
1894: ^if[def]{y;n}
1895:
1896: @image[]
1897: $pict[^image::create(400;200)]
1898: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-1;$pict.height-1;0;360;0x000000)
1899: ^pict.arc($pict.width/2;$pict.height/2;$pict.width-10;$pict.height-10;0+10;360-10;0xff0000)
1900: #^pict.arc($pict.width/2;$pict.height/2;$pict.width;$pict.height;0;360;0xff0000)
1901: ^pict.circle($pict.width/2;$pict.height/2;$pict.height/2-10;0x0000ff)
1902: ^pict.arc($pict.width/2;$pict.height/2;$pict.height-26;$pict.height-26;0+10;360-10;0xff0000)
1903: $response:body[^pict.gif[]]
1904:
1905:
1906:
1907: @mail2[]
1908: ^mail:send[
1909: $.content-type[$.value[text/plain] $.charset[windows-1251]]
1910: $.from[Александр Петросян <paf@design.ru>]
1911: $.to[Александр Петросян <paf@design.ru>]
1.134 paf 1912: $.subject[проверка проверка]
1913: $.text[проверка]
1.15 paf 1914: ]
1915:
1916: @cookie[]
1.115 paf 1917: #$env:HTTP_COOKIE<br>
1.15 paf 1918:
1919: #$cookie:переменная[test тест ТЕСТ2]
1920: =$cookie:переменная=<br>
1921: #$cookie:переменная2[test тест ТЕСТ3]
1922: =$cookie:переменная2=<br>
1923: =$cookie:CLASS.переменная2=<br>
1924:
1925: @response[]
1926: #^if($form:reload){
1927: $response:refresh[$.value[0] $.url[./t.html?uri=$env:SERVER_NAME]]
1928: #}
1929:
1930: @xslt[]
1931: ^xdata[]
1932: $transformed[^xdoc.transform[global.xsl;$.param1[123/]]]
1933: ^show_xdoc2[$transformed]
1934:
1935: @regexp2[]
1936: $s[ select]
1937: $s[^s.match[^^\s*][]{!}]
1938: $s
1939:
1940: @header[]
1941: $response:refresh[
1942: $.value[0]
1943: $.url[http://design.ru?a=^taint[123]]
1944: ]
1945:
1946: @ttablerem[]
1947: $table[^table::load[a.cfg]]
1948: ^table.menu{$table.a}
1949:
1950: @tconnect[]
1951: ^connect[mysql://test:test@paf/test?charset=cp1251_koi8&compress=1&timeout=1&named_pipe=1]{
1952: $tables[^table::sql{show tables}]
1953: #$cols[^tables.columns[]]
1954: #$cols.column
1955: ^tables.menu{
1956: $tables.[Tables_in_test]<br>
1957: }
1958: }
1959:
1960: @pcre[]
1961: $s[1 2]
1962: ^s.match[\s;ig]{!}
1963: #^s.match[\d;ig]{!}
1964:
1965:
1966: @regexp[]
1967: $s[abcАБВ]
1968: ^if(^s.match[б][i]){y}{n}
1969:
1970: @mail[]
1971: #$ORIGINS(1)
1972: ^mail:send[
1973: $.from[paf@design.ru]
1974: $.to[paf@design.ru]
1975: $.body[1
1976:
1977: 2
1978:
1979:
1980: 3]
1981: ]
1982:
1983: @exec[]
1984: $a[^file::exec[fc.exe;;a;b]]
1985: $a.status|$a.stderr<hr>
1986:
1987: @fori[][i]
1988: ^for[i](1;3){... =$i= ...}
1989:
1990: @xdata0[]
1991: #$response:content-type[$.value[text/html] $.charset[windows-1251]]
1992: $xdoc[^xdoc::set{<?xml version="1.0" encoding="windows-1251"?>
1993: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
1994: <people>
1995: <man id="1" имя="word слово">
1996: <name>P«^;AF B</name>
1997: </man>
1998: <man id="2">
1999: <name>ПИФ^taint[&]</name>
2000: </man>
2001: </people>
2002: }]
2003:
2004: @xdata[]
2005: #$response:content-type[$.value[text/html] $.charset[windows-1251]]
2006: $xdoc[^xdoc::set{^process{<?xml version="1.0" encoding="windows-1251"?>
2007: <!--DOCTYPE people SYSTEM "D:\Y\parser3project\parser3\src\www\htdocs\people.dtd"-->
2008: <people>
2009: <man id="1" имя="word слово">
2010: <name>P«^;AF B</name>
2011: </man>
2012: <man id="2">
2013: <name>ПИФ^taint[&]</name>
2014: </man>
2015: </people>
2016: }}]
2017:
2018: @xml[]
2019: ^xdata[]
2020:
2021: ^show_xdoc2[$xdoc]<hr>
2022: #^show_xnode1[$xdoc]<hr>
2023: $people[^xdoc.select[*/man]]
2024: #^show1[]
2025: ^show_xnodes1[$people]<hr>
2026: #^people.0.owner.hren[]
2027:
2028: ^show_xnode1[^xdoc.selectSingle[*/man[2]/name];0;1]<hr>
2029:
2030: by id:
2031: ^show_xnode1[^xdoc.getElementById[1];0;1]
2032: <hr>
2033:
2034: @show1[array]
2035: ^for[i](0;^array._count[]-1){
2036: $x[$array.$i]
2037: $x.firstChild.nodeValue:
2038: $pattributes[$x.parentNode.attributes]
2039: ^if(^pattributes._count[]){
2040: $pattributes.id.name=$pattributes.id.nodeValue
2041: }
2042: <br>
2043: }
2044:
2045: @show_xnodes1[array][i]
2046: ^for[i](0;^array._count[]-1){
2047: ^show_xnode1[$array.$i;0;1]
2048: }
2049:
2050: @show_xnode1[x;level;single][l]
2051: ^if(def $x){
2052: ^for[l](0;$level-1){ ^; ^; ^; ^;}
2053: ^if($x.nodeType == $xnode:ELEMENT_NODE){
2054: <^;$x.nodeName
2055: $pairs[$x.attributes]
2056: ^if(def $pairs){
2057: $names[^pairs._keys[]]
2058: ^names.menu{ $names.key="$pairs.[$names.key].nodeValue"}
2059: }
2060: >^;
2061: }{
2062: [$x.nodeType]
2063: }
2064:
2065: ^if(def $x.nodeValue){$x.nodeValue}<br>
2066: ^show_xnode1[$x.firstChild]($level+1)
2067: ^if(!$single){
2068: ^show_xnode1[$x.nextSibling]($level)
2069: }
2070:
2071: ^if($x.nodeType == $xnode:ELEMENT_NODE){
2072: ^for[l](0;$level-1){ ^; ^; ^; ^;}<^;/$x.nodeName>^;<br>
2073: }
2074: }
2075:
2076: @show_xdoc2[xdoc]
2077: ^xdoc.save[out/save.xml;
2078: # $.encoding[utf-8]
2079: $.method[xml]
2080: ]
2081: $file[^xdoc.file[
2082: $.encoding[utf-8]
2083: $.method[html]
2084: ]]
2085: ^file.save[text;out/save_file.html]
2086: #$response:body[^xdoc.file[ $.media-type[text/paf] ]]
2087: <pre>^taint[html][^xdoc.string[
2088: $.method[html]
2089: # $.encoding[utF-8]
2090: # $.omit-xml-declaration[yes]
2091: # $.standalone[no]
2092: # -$.doctype-public[-//W3C//DTD XHTML]
2093: # -$.doctype-system[/a/b/c/]
2094: # $.indent[yes]
2095: # $.media-type[text/paf]
2096: ]]
2097: </pre>
E-mail: