Xׯd%ddlZdZGddZedkr_dZdddd d d gd d dddddd gddddgdZeeZeee dddSdS)Nc&eZdZdZdZdZdZdS) MiniTemplatec:tjd||_dS)Nz({{[^}]+}}|\[\[[^]]+\]\]))resplit_tokens)selftempls ..\workbench\template.py__init__zMiniTemplate.__init__sx ;UCC cTdtd|jd|DzS)Nzline %s c8g|]}|dS) )count).0toks r z$MiniTemplate.t2l..s" O O OS4 O O Or )sumr)r rs r t2lzMiniTemplate.t2ls/C O ODL#.get(sZYYs^^ & &9"NNN1m,,&!AA1 AAHr z--z > process %s: %s, token: %s (%i)rz{{z}}#0z: No value for key z . context: z possible: z: z[[z]]zFound block %s)/![z: leaving context z through z at r+z[[/z[[??Fzif|z : evaluated z in context z to ifz: Error evaluating z: entering context z : context z has no value for block z, trynig to find !z or /z[[!z/%s not found!z/%s: token %s in context %s is a list of size %iz:#needsepz: entering lcontext z[%s]zempty list %s, skip %s (%i)zleaving at token %i)r)debug tracebackprint format_stackrstriplenrrjoin startswithendswithstrKeyErrorlistkeys ValueErrorappendeval Exceptionrender_type enumeratedict)r datairesultcontextr2r& orig_tokentokenlouterenterexcsubr%jitemitemds r rBzMiniTemplate.render_!s        ,y/E/E/G/G/K/Q/QRUWX/Y/YZ\/]/c/c/e/e/k/klp/q/qrs/t/z/z/|/|| ~ ~ ~    #dl####!%a 0J CtCLL()KtxxXY{{\_\d\del\m\motozozo|o|~OA*AACCC%%s %%..*>*>s %ad  BQx3CeABBi00="%c!ff++CC"%CC!c$..ZZZ"Z^ZbZbcdZeZeZeZegqgqgqsvs{s{}DtEtEtEtEGKLPLULULWLWGXGXGX$YZZZ!BBB$488TU;;;;XYXYXY[^[c[cdk[l[l[l[lnrsws|s|s~s~nnn&ABBBB?MM#&&&!!$''a %ENN4,@,@a %6+e3555ad 8z))eABBiwWY{OeOefiOjOj<{GBKKpwxzp{.|.|xDHHUVKKKKY\YaYabiYjYjYjYjlqlqlqststuwwwQx3 !Q#dl"3"333#|A%abb /$2FFF % #(A::$)$.!%aT%)^D5H%PUVWVXVXPY/Z^J^4_!_!_ % FA #dl"3"333H1X__!!""IE!E''..""$(qrrD$$?$?E$A %QUQYQYZ[Q\Q\Q\Q\^c^c^ceijnjsjsjujuevevevevx}x}'~!A!A!A$(EE("""!RVRZRZ[\R]R]R]R]_d_d_dfjkoktktkvkvfwfwfwfwy|y|#}!"> ##dE2B2B  w!dhhqkkkkSVS[S[\cglfm\mSnSnSnSnpqrspsps#tvvv LLqsFGUGOLL x!rvrzrz{|r}r}r}r}@C@H@HIPTYSZIZ@[@[@[@[]^_`]`]`]`bgbgbginininpupu$vxxx !Q#dl"3"333#|A%+d2BBBuPQzz$(LLqsFGugDU$V$V !Q() %!%aE%K4D!D!D % #(A::$)$.!%aT%Z_eEkRVFV4W!W!W % FA #dl"3"333!A::!#3e#;===^!c$..#^^^&^b^f^fgh^i^i^i^ikukukuwzwwAHxIxIxIxIKOPTPYPYP[P[K\K\K\(]^^^^CyyD(( K!#TX\X`X`abXcXcehememnuevevx}@CDG@H@HXI$IKKK'0~~ ^ ^GAt$(JJE*-ac((E$K 3s88A:~~34i 0 034i 0$F %488TU;;;;X[X`X`ahlqsyz{s{k|a|X}X}X}X}@ABC@C@C(D!F!F!F $ UAaCESYZ[S[K\A\ ] ]AA" '$%EFA"#c$,&7&7"7"7#(!m$)+HESWS_`aSbdiKj+j$l$l$l#'<?eEk$6F#F#F$)QJE',zz(-(2%)\!_eD%PU+VZJZ8[%[%[$)QJE !Q#$c$,&7&7"7"7 w!dhhqkkkkSVS[S[\cglfm\mSnSnSnSnpqrspsps#tvvv LLac67eW;LMM e$$$ FAq#dl####r  / (1, . . .sBAF++A2JAI<<J A.R;; TA TT [A*]ctg}||d|gdd|DS)Nrrc,g|]}t|S)r:)rss r rz'MiniTemplate.render..s***1A***r )rBr7)r rFrLs r renderzMiniTemplate.renders@  T1a$$$ww*****+++r N)__name__ __module__ __qualname__r rrBrYrWr r rrsZDDDQQQMMM^,,,,,r r__main__z {{title}} [[objects]] {{name}} There are {{#subobjects}} objects in this object: {{:#}}.[[subobjects]]{{:#}} - {{name}} [[?error]]ERROR![[/error]][[/subobjects]] Type: {{thing.type}} [[thing]] Value: {{value}} [[/thing]] [[/objects]] Titlez Some Nameobject1 subobject1r)nameerrorinti90)rCvalue)ra subobjectsthingobject2 subobject1of2r:qqqq)titleraobjectsz\ r) rr1rrZtemplaterFtemr3rYreplacerWr r ros!,  Y,Y,Y,Y,Y,Y,Y,Y,| zH$  #q 1 1  &! 5 5    D6 ,x C E3::d   # #FB / /11111]r