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