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

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

E-mail: