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