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