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