Ну а если кому всё же на парсере надо...
Саян 09.05.2009 10:29
Создаем diagram.htm с нижеприведенным кодом. В качестве аргумента передаем строковый хэш. И можно дать картинку-подложку.
Методы @compact и @h2s:h2s пригодятся для построения аргумента с данными.
В общем, хоть и без динамики, но зато будет работать на PDA))
@main[]
$example_of_diagram[
$.x[500]
$.y[300]
$.bgcolor[EEEEEE]
$.ls[** ]
$.lw(2)
$.lines[
$.example_line[
$.lw[4]
$.color[FF0000]
$.line[0=20,100=22,200=40,300=20,400=37]
]
$.example_line2[
$.lw[2]
$.color[FFFF00]
$.line[0=25,100=26,200=1,300=30,400=57]
]
]
]
$pikk[^diagram:draw[^h2s:createh[$form:img]]]
$response:body[^pikk.gif[]]
@CLASS
diagram
@draw[graph]
$g[$.x(500)$.y(300)$.bgcolor[FFFFFF]$.lw(1)$.ls[*]]
#making graph with
^g.add[$graph]
$g.bgcolor[0x$g.bgcolor]
^if(def $g.base && -f "$g.base"){
$pic[^image::load[$g.base]]
}{
$pic[^image::create($g.x;$g.y;^g.bgcolor.int(0xEEEEEE))]
}
^g.lines.foreach[k;v]{
^drawline[$g.lines.$k]
}
$result[$pic]
@drawline[line]
$l[$.lw($g.lw)$.color[000000]$.ls[$g.ls]]
^l.add[$line]
$pic.line-width($l.lw)
$pic.line-style[$l.ls]
$pg[^expand[$l.line;=;,]]
$polygon[^table::create{x y
^pg.menu{$pg.param ^eval($g.y - $pg.value - 1)}[
]}]
$l.color[0x$l.color]
^pic.polyline(^l.color.int(0x000000))[$polygon]
#^h2s:h2s[$l]<br>
@compact[tbl;tab;new]
^if(!def $tab){$tab[==]}
^if(!def $new){$new[,,]}
$result[^tbl.menu{${tbl.param}${tab}${tbl.value}}[$new]]
@expand[str;tab;new][rep]
^if(!def $str){$str[ ]}
^if($expand_replace is table){;$expand_replace[^table::create{from to
&tab ^taint[^#09]
^default[$tab;==] ^taint[^#09]
^default[$new;,,] ^taint[^#0A]
^taint[^#0A]
^taint[^#0D] }]}
$result[^table::create{param value value2
^untaint{^str.replace[$expand_replace]}}]
@CLASS
h2s
@createh[str]
^process{^taint[as-is; ^$hash_^[$str^] ]}
$result[^if($hash_ is hash){$hash_}{^hash::create[]}]
@h2o[hash_;div]
$result[^hash_.foreach[k;v]{$k}[^if(def $div){$div}{ }]]
@h2s[hash1;level][tmp;hh]
$hh(^level.int(0))^hh.inc(1)^hash1.foreach[k;v]{^if($v is hash){$tmp[^hash::create[$hash1.$k]]^$.$k^[^h2s[$tmp;$hh]]}{^$.$k^if($v is int || $v is double){($v)}{[^unparse[$v]]}}}
@unparse[t]
^if($unparser is table){;
$unparser[^table::create{from to
^^ ^^^^
^$ ^^^$
^; ^^^;
^[ ^^^[
^] ^^^]}]
}
$result[^t.replace[$unparser]]