@@ -23,14 +23,21 @@ def _attrmap(o):
2323 return o .lstrip ('_' ).replace ('_' , '-' )
2424
2525# %% ../nbs/11_xml.ipynb 5
26- class XT (list ): pass
26+ class XT (list ):
27+ def __init__ (self , tag , cs , attrs ): super ().__init__ ([tag , cs , attrs ])
28+ @property
29+ def tag (self ): return self [0 ]
30+ @property
31+ def children (self ): return self [1 ]
32+ @property
33+ def attrs (self ): return self [2 ]
2734
2835# %% ../nbs/11_xml.ipynb 6
2936def xt (tag :str , * c , ** kw ):
3037 "Create an XML tag structure `[tag,children,attrs]` for `toxml()`"
3138 if len (c )== 1 and isinstance (c [0 ], types .GeneratorType ): c = tuple (c [0 ])
3239 kw = {_attrmap (k ):(v if isinstance (v ,bool ) else str (v )) for k ,v in kw .items () if v is not None }
33- return XT ([ tag .lower (),c ,kw ] )
40+ return XT (tag .lower (),c ,kw )
3441
3542# %% ../nbs/11_xml.ipynb 7
3643_g = globals ()
@@ -46,16 +53,16 @@ def xt(tag:str, *c, **kw):
4653
4754for o in _all_ : _g [o ] = partial (xt , o .lower ())
4855
49- # %% ../nbs/11_xml.ipynb 10
56+ # %% ../nbs/11_xml.ipynb 12
5057voids = set ('area base br col command embed hr img input keygen link meta param source track wbr !doctype' .split ())
5158
52- # %% ../nbs/11_xml.ipynb 11
59+ # %% ../nbs/11_xml.ipynb 13
5360def _to_attr (k ,v ):
5461 if v == True : return str (k )
5562 if v == False : return ''
5663 return f'{ k } ="{ escape (str (v ), quote = False )} "'
5764
58- # %% ../nbs/11_xml.ipynb 12
65+ # %% ../nbs/11_xml.ipynb 14
5966def to_xml (elm , lvl = 0 ):
6067 "Convert `xt` element tree into an XML string"
6168 if isinstance (elm , tuple ): return '\n ' .join (to_xml (o ) for o in elm )
@@ -78,15 +85,15 @@ def to_xml(elm, lvl=0):
7885 if tag not in voids : res += f'{ sp } { cltag } \n '
7986 return res
8087
81- # %% ../nbs/11_xml.ipynb 14
82- def highlight (s , lang = 'html ' ):
88+ # %% ../nbs/11_xml.ipynb 16
89+ def highlight (s , lang = 'xml ' ):
8390 "Markdown to syntax-highlight `s` in language `lang`"
8491 return f'```{ lang } \n { to_xml (s )} \n ```'
8592
86- # %% ../nbs/11_xml.ipynb 15
93+ # %% ../nbs/11_xml.ipynb 17
8794def showtags (s ):
8895 return f"""<code><pre>
8996{ escape (to_xml (s ))}
9097</code></pre>"""
9198
92- XT ._repr_html_ = showtags
99+ XT ._repr_markdown_ = highlight
0 commit comments