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