
    Dg                      `   d Z ddlZddlZej        dk    rd ZddZnd ZeZ G d de          Z G d	 d
e          Z	 ede
fde	dd          Z G d de	          Z G d de          Z G d de
          Z G d de
          Z G d de          Z G d d          Z e            ZdS )z
module for generating and serializing xml and html structures
by using simple python objects.

(c) holger krekel, holger at merlinux eu. 2009
    N)   r   c                     | S N ss    ?/var/www/sysmax/venv/lib/python3.11/site-packages/py/_xmlgen.pyur
   
   s        c                 h    t          | d          r|                                 S t          |           S )N__unicode__)hasattrr   str)xerrorss     r	   unicoder      s-    1m$$ 	#==??"1vvr   c                      t          |           S r   r   r   s    r	   r
   r
      s    qzzr   c                       e Zd Zd ZdS )NamespaceMetaclassc                    |d d         dk    rt          |          | t          k    rt          d          | j        }|||vrt          |          i }| j        r||d<   t          || j        f|          }t          | ||           |S )N   _zNamespace class is abstractxmlname)AttributeError	Namespace
ValueError__tagspec____stickyname__type__tagclass__setattr)selfnametagspec	classattrclss        r	   __getattr__zNamespaceMetaclass.__getattr__   s    8s?? &&&9:;;;"4w#6#6 &&&	 	(#'Ii 4$+-y99dC   
r   N)__name__
__module____qualname__r(   r   r   r	   r   r      s#            r   r   c                   R     e Zd Z G d de          Z fdZd ZeZddZd Z	 xZ
S )	Tagc                       e Zd Zd ZdS )Tag.Attrc                 :    | j                             |           d S r   )__dict__update)r#   kwargss     r	   __init__zTag.Attr.__init__(   s    M  (((((r   Nr)   r*   r+   r4   r   r   r	   Attrr/   '   s#        	) 	) 	) 	) 	)r   r6   c                 |    t          t          |                               |            | j        di || _        d S )Nr   )superr-   r4   r6   attr)r#   argsr3   	__class__s      r	   r4   zTag.__init__+   s>    c4!!$'''DI''''			r   c                 .    |                      d          S )Nr   )indentr   r#   s    r	   r   zTag.__unicode__/   s    ||1|%%%r      c                     g }t          |j        |                              |            t          d                              |          S N )SimpleUnicodeVisitorappendvisitr
   joinr#   r=   ls      r	   r   zTag.unicode3   s=    QXv..44T:::uuzz!}}r   c                 B    | j         j        }d|t          |           fz  S )Nz<%r tag object %d>)r;   r)   id)r#   r$   s     r	   __repr__zTag.__repr__8   s"    ~&#tRXX&666r   r?   )r)   r*   r+   objectr6   r4   r   __str__r   rK   __classcell__r;   s   @r	   r-   r-   &   s        ) ) ) ) )v ) ) )( ( ( ( (& & &G   
7 7 7 7 7 7 7r   r-   r   F)r   r!   r   c                       e Zd ZddZdS )HtmlTagr?   c                     g }t          |j        |d                              |            t          d                              |          S )NF
shortemptyrB   )HtmlVisitorrD   rE   r
   rF   rG   s      r	   r   zHtmlTag.unicodeC   sB    AHf777==dCCCuuzz!}}r   NrL   )r)   r*   r+   r   r   r   r	   rR   rR   B   s(             r   rR   c                       e Zd ZeZdZ ed d                    d          D                       Z G d de	          Z
dS )htmlTc                     g | ]}||d f	S r   r   .0r   s     r	   
<listcomp>zhtml.<listcomp>L   s2       ! 1   r   a  a,abbr,acronym,address,applet,area,article,aside,audio,b,base,basefont,bdi,bdo,big,blink,blockquote,body,br,button,canvas,caption,center,cite,code,col,colgroup,command,comment,datalist,dd,del,details,dfn,dir,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,font,form,frame,frameset,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,i,iframe,img,input,ins,isindex,kbd,keygen,label,legend,li,link,listing,map,mark,marquee,menu,meta,meter,multicol,nav,nobr,noembed,noframes,noscript,object,ol,optgroup,option,output,p,param,pre,progress,q,rp,rt,ruby,s,samp,script,section,select,small,source,span,strike,strong,style,sub,summary,sup,table,tbody,td,textarea,tfoot,th,thead,time,title,tr,track,tt,u,ul,xmp,var,video,wbr,c                       e Zd Zd ZdS )
html.Stylec                     |                                 D ],\  }}|                    dd          }t          | ||           -d S )Nr   -)itemsreplacer"   )r#   kwr   ys       r	   r4   zhtml.Style.__init__\   sO    

 $ $1IIc3''a####$ $r   Nr5   r   r   r	   Styler`   [   s#        	$ 	$ 	$ 	$ 	$r   rg   N)r)   r*   r+   rR   r!   r   dictsplitr   rM   rg   r   r   r	   rX   rX   I   s        LN$  	G eCjj    K$ $ $ $ $ $ $ $ $ $r   rX   c                       e Zd ZdZd ZdS )rawz]just a box that can contain a unicode string that will be
    included directly in the outputc                     || _         d S r   )uniobj)r#   rm   s     r	   r4   zraw.__init__e   s    r   N)r)   r*   r+   __doc__r4   r   r   r	   rk   rk   b   s-        ' '    r   rk   c                   V    e Zd ZdZddZd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd ZdS )rC   z% recursive visitor to write unicode. r   Tc                 h    || _         i | _        i | _        || _        || _        g | _        || _        d S r   )writecachevisitedr=   	curindentparentsrU   )r#   rq   r=   rt   rU   s        r	   r4   zSimpleUnicodeVisitor.__init__j   s7    

"$r   c                     |j         }	 | j        |         }nE# t          $ r8 |j        D ]}t	          | |j        d          }| n| j        }|| j        |<   Y nw xY w ||           dS )z( dispatcher on node's class/bases name. N)r;   rr   KeyError__mro__getattrr)   _SimpleUnicodeVisitor__object)r#   noder'   visitmethodsubclasss        r	   rE   zSimpleUnicodeVisitor.visits   s    n		**S/KK 	* 	* 	*K , ,%dH,=tDD*E + #m)DJsOOO	* 	Ds    ?AAc                 d    |                      t          t          |                               d S r   )rq   escaper   r#   objs     r	   __objectzSimpleUnicodeVisitor.__object   s(    

6'#,,''(((((r   c                 :    |                      |j                   d S r   )rq   rm   r   s     r	   rk   zSimpleUnicodeVisitor.raw   s    

3:r   c                     t          |          | j        vsJ d| j        t          |          <   |D ]}|                     |           d S )Nr   )rJ   rs   rE   )r#   r   elems      r	   listzSimpleUnicodeVisitor.list   s[    #wwdl**** !RWW 	 	DJJt	 	r   c                 .   t          |          | j        vsJ 	 | j        d         |_        n# t          $ r
 d |_        Y nw xY wd| j        t          |          <   t          |d|j        j                  }| j        rB| 	                    |          s-| 
                    dt          d          | j        z  z              |r| xj        | j        z  c_        | 
                    t          d          ||                     |          fz             | j                            |           |D ]}|                     |           | j                                         | 
                    t          d          |z             | xj        | j        z  c_        d S ||                     |          z   }|                     |          r(| 
                    t          d          |fz             d S | 
                    t          d	          ||fz             d S )
Nr   r   
 z<%s%s>z</%s>z<%s/>z	<%s></%s>)rJ   rs   ru   parent
IndexErrorry   r;   r)   rt   	_isinlinerq   r
   r=   
attributesrD   rE   pop_issingleton)r#   tagtagnamer   nameattrs        r	   r-   zSimpleUnicodeVisitor.Tag   s   #wwdl****	b)CJJ 	 	 	CJJJ	 !RWW#y#-*@AA> 	7$.."9"9 	7JJtafft~55666 	ANNdk)NNJJq{{gts/C/C%DDEEEL$$$  

1LJJqzzG+,,,NNdk)NNNNts333H  )) A

1W::344444

1[>>Xw,??@@@@@s   - A Ac                 X   t          |j                  }|                                 g }|D ]4}|                     |j        |          }||                    |           5|                    |                     |                     t          d                              |          S rA   )	dirr9   sortrepr_attributerD   extendgetstyler
   rF   )r#   r   attrlistrH   r$   ress         r	   r   zSimpleUnicodeVisitor.attributes   s    sx== 	 	D%%ch55C	s##$$$uuzz!}}r   c                    |d d         dk    rqt          ||          }|                    d          r
|d d         }t          |t                    r|j        }nt          t          |                    }d|d|dS d S )Nr?   __r   r   r   z="")ry   endswith
isinstancerk   rm   r   r   )r#   attrsr$   valueinserts        r	   r   z#SimpleUnicodeVisitor.repr_attribute   s    8tE4((E}}S!! !CRCy%%% 0//!%vvv.. r   c                     	 |j         j        }d |                                D             }t          d          t          d                              |          z  gS # t
          $ r g cY S w xY w)z- return attribute list suitable for styling. c                 $    g | ]\  }}|d z   |z   S )z: r   )r\   r   rf   s      r	   r]   z1SimpleUnicodeVisitor.getstyle.<locals>.<listcomp>   s$    AAA!4!AAAr   z style="%s"z; )styler1   rc   r
   rF   r   )r#   r   	styledict	stylelists       r	   r   zSimpleUnicodeVisitor.getstyle   s    	@	*I BAy/@/@AAAIm$$qww||I'>'>>??	  	 	 	III	s   A A.-A.c                     | j         S )*can (and will) be overridden in subclassesrT   r#   r   s     r	   r   z!SimpleUnicodeVisitor._issingleton   s
    r   c                     dS )r   Fr   r   s     r	   r   zSimpleUnicodeVisitor._isinline   s    ur   N)r   r   T)r)   r*   r+   rn   r4   rE   rz   rk   r   r-   r   r   r   r   r   r   r   r	   rC   rC   h   s        //% % % %  ") ) )    A A A4
 
 
	/ 	/ 	/@ @ @      r   rC   c                        e Zd Z ed d                    d          D                       Z ed d                    d          D                       Z fdZd Zd	 Z	 xZ
S )
rV   c                     g | ]}|d fS rZ   r   r[   s     r	   r]   zHtmlVisitor.<listcomp>   s(     / / /aAq6 / / /r   z3br,img,area,param,col,hr,meta,link,base,input,framer^   c                     g | ]}|d fS rZ   r   r[   s     r	   r]   zHtmlVisitor.<listcomp>   s.     A A AaAq6 A A Ar   za abbr acronym b basefont bdo big br cite code dfn em font i img input kbd label q s samp select small span strike strong sub sup textarea tt u varr   c                     |dk    rt          ||          }|d S t          t          |                               ||          S )Nclass_)ry   r8   rV   r   )r#   r   r$   r   r;   s       r	   r   zHtmlVisitor.repr_attribute   sG    8E4((E}[$''66udCCCr   c                     || j         v S r   )singler   s     r	   r   zHtmlVisitor._issingleton       $+%%r   c                     || j         v S r   )inliner   s     r	   r   zHtmlVisitor._isinline   r   r   )r)   r*   r+   rh   ri   r   r   r   r   r   rO   rP   s   @r	   rV   rV      s        T / /"#(5::/ / / 0 0F T A A449E#JJA A A B BF
D D D D D& & && & & & & & &r   rV   c                        e Zd Zd Zd Zd ZdS )_escapec                    t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d	          t          d
          i| _        t          j        t          d                              | j                                                            | _        d S )Nr   z&quot;<z&lt;>z&gt;&z&amp;'z&apos;|)r
   r   recompilerF   keys
charef_rexr>   s    r	   r4   z_escape.__init__   s    cFFQx[[!C&&1V99affqyycFFQwZZ3!H++ *QsVV[[1A1A1C1C%D%DEEr   c                 B    | j         |                    d                   S )Nr   )r   group)r#   matchs     r	   	_replacerz_escape._replacer   s    {5;;q>>**r   c                     	 t          |          }n"# t          $ r t          |dd          }Y nw xY w| j                            | j        |          S )z& xml-escape the given unicode string. zutf-8rd   )r   )r   UnicodeDecodeErrorr   subr   )r#   ustrings     r	   __call__z_escape.__call__   sh    	Bg&&GG! 	B 	B 	BgwyAAAGGG	B""4>7;;;s    11N)r)   r*   r+   r4   r   r   r   r   r	   r   r      sD        F F F+ + +< < < < <r   r   r   )rn   sysr   version_infor
   r   r    r   r   r-   rM   r   rR   rX   rk   rC   rV   r   r   r   r   r	   <module>r      s    u      
  G        7 7 7 7 7$ 7 7 7, {VJ9 9  	    c   $ $ $ $ $9 $ $ $2    &   j j j j j6 j j jX& & & & && & & &0< < < < < < < <& 
r   