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