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