
    Mh                        d Z ddlmZmZmZmZ ddlZddlZddlZddl	Z	ddl
Z
dZ e	j                  d      ZdZej!                   e
j"                   edd      d ed	d
       edd      d      e      Z G d de      Zd Zd Zd Zd Zy)z*xmlWriter.py -- Simple XML authoring class    )byteordstrjointobytestostrNz  zfontTools.ttx?	   )             i   i   )i  i  c                       e Zd ZedddfdZd Zd Zd ZddZd	 Z	d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y)	XMLWriterNutf_8
c                    |j                         j                  dd      j                  dd      dk7  rt        d      |dk(  rt        j                  }t        |d      s || _        t        |d      | _        d| _	        nd | _        || _        d	| _	        	 | j                  j                  d
       t        | _        | j                  |      | _        |%| j                  t         j"                        | _        n| j                  |      | _        d| _        g | _        d| _        || _        d| _        | j1                  d       | j3                          y # t        $ r) | j                  j                  d       t        | _        Y w xY w)N- _utf8z!Only UTF-8 encoding is supported.writewbTF    r      z&<?xml version="1.0" encoding="UTF-8"?>)lowerreplace	Exceptionsysstdouthasattrfilenameopenfile_closeStreamr   r   totype	TypeErrorr   indentwhiteoslinesep
newlinestrindentlevelstack
needindentidlefuncidlecounter	_writerawnewline)self
fileOrPathr&   r-   encodingr)   s         p/var/www/pru.catia.catastroantioquia-mas.com/valormasv2/lib/python3.12/site-packages/fontTools/misc/xmlWriter.py__init__zXMLWriter.__init__   sE    >>##C,44S"=G?@@Jz7+&DMZ.DI $D DM"DI %D	  IIOOC !DK
  ;;{3"kk"**5DO"kk*5DO
 ?@  	 IIOOBDK	 s   &E /FFc                     | S N r1   s    r4   	__enter__zXMLWriter.__enter__G   s    r   c                 $    | j                          y r7   )close)r1   exception_typeexception_value	tracebacks       r4   __exit__zXMLWriter.__exit__J   s    

r   c                 R    | j                   r| j                  j                          y y r7   )r#   r"   r<   r9   s    r4   r<   zXMLWriter.closeM   s    IIOO r   c                 <    | j                  t        |      |       y)zWrites text.indentNr/   escape)r1   stringrD   s      r4   r   zXMLWriter.writeQ   s    vf~f5r   c                 2    | j                  d|z   dz          y)zWrites text in a CDATA section.z	<![CDATA[z]]>N)r/   r1   rG   s     r4   
writecdatazXMLWriter.writecdataU   s    {V+e34r   c                 <    | j                  t        |      |       y)zWrites a bytes() sequence into the XML, escaping
        non-ASCII bytes.  When this is read in xmlReader,
        the original bytes can be recovered by encoding to
        'latin-1'.)stripN)r/   
escape8bit)r1   datarL   s      r4   	write8bitzXMLWriter.write8bitY   s    
 	z$'u5r   c                 <    | j                  t        |      d       y)z Writes text without indentation.FrC   NrE   rI   s     r4   write_noindentzXMLWriter.write_noindent`   s    vf~e4r   c                    |rE| j                   r9| j                  j                  | j                  | j                  z         d| _         | j                  |d      }|r|j                         }| j                  j                  |       y)z Writes bytes, possibly indented.r   r   )r3   N)r,   r"   r   r*   r&   r$   rL   )r1   rN   rD   rL   ss        r4   r/   zXMLWriter._writerawd   sc    dooIIOOD,,t/?/??@DOKKwK/	A		r   c                     | j                   j                  | j                         d| _        | j                  }|dz  s| j
                  | j                          |dz   | _        y )Nr   d   )r"   r   r)   r,   r.   r-   )r1   r.   s     r4   r0   zXMLWriter.newlinen   sN    		(&&S T]]%>MMO&?r   c                     t        |      }|j                  d      }| j                  d|d   z          |dd  D ]&  }| j                          | j                  d|z          ( | j                  d       y )Nr   z<!-- r   r   z     z -->)rF   splitr/   r0   )r1   rN   lineslines       r4   commentzXMLWriter.commentv   sj    d|

4 wq)*!"I 	+DLLNNN7T>*	+ 	vr   c                 Z     | j                   |i |}d||d}| j                  |       y )N<z/>)stringifyattrsr/   r1   _TAG_argskwargsattrdatarN   s         r4   	simpletagzXMLWriter.simpletag   s/    &4&&77!8,tr   c                      | j                   |i |}d||d}| j                  |       | j                  j                  |       | j	                          y )Nr\   >)r]   r/   r+   appendrD   r^   s         r4   begintagzXMLWriter.begintag   sJ    &4&&77 (+t

% r   c                     | j                   r| j                   d   |k(  sJ d       | j                   d= | j                          d|z  }| j                  |       y )Nznonmatching endtagz</%s>)r+   dedentr/   )r1   r_   rN   s      r4   endtagzXMLWriter.endtag   sM    zzdjjn5K7KK5JJrNtr   c                     d}|dz  }d}t        dt        |      |      D ]Z  }t        ||||z          }d}d}t        d||      D ]  }	||z   ||	|	|z    z   }d} | j                  |       | j	                          \ y )N         r   r    )rangelenhexStrr/   r0   )
r1   rN   
linelengthhexlinelength	chunksizeihexlinerY   whitejs
             r4   dumphexzXMLWriter.dumphex   s    
"Q	q#d)Z0 	AT!a*n56GDE1mY7 e|ga!i-&@@ NN4 LLN	r   c                 ,    | j                   dz   | _         y )Nr   r*   r9   s    r4   rD   zXMLWriter.indent   s    ++a/r   c                 N    | j                   dkD  sJ | j                   dz
  | _         y )Nr   r   r}   r9   s    r4   rj   zXMLWriter.dedent   s)    !###++a/r   c                     |r|rJ t        |j                               }n|rt        |      dk(  sJ |d   }nyd}|D ];  \  }}t        |t        t
        f      st        |      }|d|dt        |      dz   }= |S )Nr   r   r   rp   z="")sorteditemsrr   
isinstancebytesstr
escapeattr)r1   r`   ra   
attributesrN   attrvalues          r4   r]   zXMLWriter.stringifyattrs   s    O8/Jt9>!>aJ% 	AKD%eeS\2E
j.?@@D	A r   )T)F)TF)__name__
__module____qualname__INDENTr5   r:   r@   r<   r   rJ   rO   rQ   r/   r0   rZ   rc   rg   rk   r{   rD   rj   r]   r8   r   r4   r   r      sk     +Z6565+
00r   r   c                 v   t        | d      } | j                  dd      } | j                  dd      } | j                  dd      } | j                  dd	      } | j                  t              }|| k7  rJd
}t	        |       }t        |       |kD  rt	        | d|       dd dz   }t        j                  d|t               |S )zQEscape characters not allowed in `XML 1.0 <https://www.w3.org/TR/xml/#NT-Char>`_.r   &z&amp;r\   z&lt;re   z&gt;z&#13;
   Nr   ri   z...zEIllegal XML character(s) found; replacing offending string %r with %r)	r   r   	translateILLEGAL_XML_CHARSreprrr   TTX_LOGwarningREPLACEMENT)rN   newDatamaxLenpreviews       r4   rF   rF      s    wD<<W%D<<V$D<<V$D<<g&Dnn./G$t*t9v4=)!B/%7GV	

 Nr   c                 @    t        |       } | j                  dd      } | S )Nr   z&quot;)rF   r   )rN   s    r4   r   r      s     $<D<<X&DKr   c                 P    d }t        t        || j                  d                  S )zInput is Unicode string.c                 b    t        |       }d|cxk  rdk  r	n n| dvr| S dt        |      z   dz   S )Nr      z<&>z&#;)ordr   )cns     r4   
escapecharzescape8bit.<locals>.escapechar   s4    F>c>aunH$q'>C''r   zlatin-1)r   mapdecode)rN   r   s     r4   rM   rM      s$    ( 3z4;;y#9:;;r   c                 |    t         j                  }d}| D ]$  }t        |      }|||dz	  dz     z   ||dz     z   }& |S )Nr         )rG   	hexdigitsr   )rS   hrr   rw   s        r4   rs   rs      sU    A
A /AJ16S.!!Aa#gJ./ Hr   )__doc__fontTools.misc.textToolsr   r   r   r   r   r'   rG   logging	itertoolsr   	getLoggerr   r   dictfromkeyschainrq   r   objectr   rF   r   rM   rs   r8   r   r4   <module>r      s    0 E E 
 	   	
'

O
,MMIOOdDdDff 	 \ \~,
<r   