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