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