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

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

E-mail: