
    0h                     `    S SK Jr  S SKJr  S SKJrJr  S rS
S jr  SS jr	 " S S	\
5      rg)    )StringIO)contextmanager)escape	quoteattrc                     US:X  a  gSnU  H0  u  pEUc  M
  US[        U5      -   [        [        U5      5      -   -  nM2     X1-   U-   $ )Nr      )lenr   )
attributesindentself_indentattr_lengthattrvalues         1/lib/gobject-introspection/giscanner/xmlwriter.py_calc_attrs_lengthr      sX    |K!
 =q3t9}s9U+;'<<< " +--    c                     U(       d  g[        XU5      S:  a  U[        U 5      -   S-   nOSnSnSnU HC  u  pU	c  M
  U(       a  U(       d
  USX5-  -  -  nUSU< S[        U	5      < 3-  nU(       d  MA  S	nME     U$ )
N O      r   Tz
%s =F)r   r
   r   )
tag_namer   r   self_indent_charr   
indent_lenfirst
attr_valuer   r   s
             r   collect_attributesr   )   s    *k:R? 3x=014

EJ!
 =e&$4$ABBJ$	%(899
5E " r   Nc           
          Uc  / nSU < 3nUb;  [        U[        5      (       a  UR                  S5      nS[        U5      < SU < S3nOSn[	        XUU[        U5      [        U5      -   5      nXW-   U-   $ )N<zUTF-8></z/>)
isinstancebytesdecoder   r   r
   )r   r   datar   r   prefixsuffixattrss           r   build_xml_tagr+   A   s}    
!FdE"";;w'D%d|X6Fc&k!	#E
 >F""r   c                       \ rS rSrS rSS jrS rS rS rS r	S	 r
SS
 jrS rSS jrSS jrS r\SS j5       rSrg)	XMLWriterT   c                     [        5       U l        U R                  R                  S5        / U l        SU l        SU l        U R                  5         g )Nz<?xml version="1.0"?>
r   r	   )r   _datawrite
_tag_stack_indent_indent_unitenable_whitespaceselfs    r   __init__XMLWriter.__init__V   sB    
 Z


23 r   Nc           	          Uc  / n[        XU R                  U R                  [        U5      S-   5      nU R	                  SU< U< S35        g )Nr	   r!   r"   )r   r3   _indent_charr
   
write_line)r7   r   r   r*   s       r   	_open_tagXMLWriter._open_tagd   sF    J"8#'<<1B1BCMTUDUWHe45r   c                 0    U R                  SU< S35        g )Nr#   r"   r<   r7   r   s     r   
_close_tagXMLWriter._close_tagk   s    8./r   c                      SU l         SU l        g )Nr   
r;   _newline_charr6   s    r   r5   XMLWriter.enable_whitespacep   s    !r   c                      SU l         SU l        g )Nr   rF   r6   s    r   disable_whitespaceXMLWriter.disable_whitespacet   s    r   c                 6    U R                   R                  5       $ )z,Returns a unicode string containing the XML.)r0   getvaluer6   s    r   get_xmlXMLWriter.get_xmlx   s    zz""$$r   c                 T    U R                   R                  5       R                  S5      $ )z8Returns a utf-8 encoded bytes object containing the XML.utf-8)r0   rM   encoder6   s    r   get_encoded_xmlXMLWriter.get_encoded_xml|   s     zz""$++G44r   c                    [        U[        5      (       a  UR                  S5      n[        U[        5      (       d   eU(       a  [	        U5      nU(       aF  U R
                  R                  U R                  U R                  -  < U< U R                  < 35        g U R
                  R                  U< U R                  < 35        g )NrQ   )
r$   r%   r&   strr   r0   r1   r;   r3   rG   )r7   liner   	do_escapes       r   r<   XMLWriter.write_line   s    dE"";;w'D$$$$$$<DJJ):):T\\)I)-)-););= > JJtT-?-?@Ar   c                 0    U R                  SU< S35        g )Nz<!-- z -->r@   )r7   texts     r   write_commentXMLWriter.write_comment   s    01r   c           	      f    U R                  [        XUU R                  U R                  5      5        g N)r<   r+   r3   r;   )r7   r   r   r'   s       r   	write_tagXMLWriter.write_tag   s*    hD&*llD4E4EG 	Hr   c                     Uc  / nU R                  X5        U R                  R                  U5        U =R                  U R                  -  sl        g r_   )r=   r2   appendr3   r4   r7   r   r   s      r   push_tagXMLWriter.push_tag   s?    Jx,x()))r   c                     U =R                   U R                  -  sl         U R                  R                  5       nU R	                  U5        U$ r_   )r3   r4   r2   poprB   rA   s     r   pop_tagXMLWriter.pop_tag   s9    )))??&&(!r   c              #      #    U R                  X5         S v   U R                  5         g ! U R                  5         f = f7fr_   )re   ri   rd   s      r   
tagcontextXMLWriter.tagcontext   s+     h+	LLNDLLNs   ?* ?<?)r0   r3   r;   r4   rG   r2   r_   )r   TF)__name__
__module____qualname____firstlineno__r8   r=   rB   r5   rJ   rN   rS   r<   r\   r`   re   ri   r   rl   __static_attributes__ r   r   r-   r-   T   sT    
!60
" %5B2H*  r   r-   )r   )NNr   r   )ior   
contextlibr   xml.sax.saxutilsr   r   r   r   r+   objectr-   rs   r   r   <module>rx      s7   *  % ..0 EF#&#&S Sr   