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