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