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