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