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