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