Annotation of parser3/www/htdocs/index.html, revision 1.196

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

E-mail: