
    h                     j    S r SSKJrJrJrJr  SSKrSSKrSSKrSr	 " S S\
5      rS rS rS	 rS
 rg)z*xmlWriter.py -- Simple XML authoring class    )byteordstrjointobytestostrNz  c                       \ rS rSr\SSS4S jrS rS rS rSS	 jr	S
 r
SS jrS rSS jrS rS rS rS rS rS rS rS rS rSrg)	XMLWriter   Nutf_8
c                    UR                  5       R                  SS5      R                  SS5      S:w  a  [        S5      eUS:X  a  [        R                  n[        US5      (       d  Xl        [        US5      U l        SU l	        OS U l        Xl        S	U l	         U R                  R                  S
5        [        U l        U R                  U5      U l        Uc%  U R                  [         R"                  5      U l        OU R                  U5      U l        SU l        / U l        SU l        X0l        SU l        U R1                  S5        U R3                  5         g ! [         a)    U R                  R                  S5        [        U l         Nf = f)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         J/var/www/html/env/lib/python3.13/site-packages/fontTools/misc/xmlWriter.py__init__XMLWriter.__init__   sB    >>##C,44S"=G?@@Jz7++&MZ.DI $D DM"I %D	  IIOOC !DK
  ;;{3"kk"**5DO"kk*5DO
 ?@  	 IIOOBDK	 s   &E 0FFc                     U $ N r,   s    r/   	__enter__XMLWriter.__enter__9   s    r   c                 $    U R                  5         g r3   )close)r,   exception_typeexception_value	tracebacks       r/   __exit__XMLWriter.__exit__<   s    

r   c                 \    U R                   (       a  U R                  R                  5         g g r3   )r   r   r9   r5   s    r/   r9   XMLWriter.close?   s    IIOO r   c                 6    U R                  [        U5      US9  g)zWrites text.indentNr*   escape)r,   stringrC   s      r/   r   XMLWriter.writeC   s    vf~f5r   c                 2    U R                  SU-   S-   5        g)zWrites text in a CDATA section.z	<![CDATA[z]]>N)r*   r,   rF   s     r/   
writecdataXMLWriter.writecdataG   s    {V+e34r   c                 6    U R                  [        U5      US9  g)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)r,   datarM   s      r/   	write8bitXMLWriter.write8bitK   s    
 	z$'u5r   c                 6    U R                  [        U5      SS9  g)z Writes text without indentation.FrB   NrD   rI   s     r/   write_noindentXMLWriter.write_noindentR   s    vf~e4r   c                 *   U(       aJ  U R                   (       a9  U R                  R                  U R                  U R                  -  5        SU l         U R                  USS9nU(       a  UR                  5       nU R                  R                  U5        g)z Writes bytes, possibly indented.r   r
   )r.   N)r'   r   r   r%   r!   r   rM   )r,   rO   rC   rM   ss        r/   r*   XMLWriter._writerawV   sc    dooIIOOD,,t/?/??@DOKKwK/	A		r   c                     U R                   R                  U R                  5        SU l        U R                  nUS-  (       d  U R
                  b  U R                  5         US-   U l        g )Nr   d   )r   r   r$   r'   r)   r(   )r,   r)   s     r/   r+   XMLWriter.newline`   sN    		(&&S T]]%>MMO&?r   c                     [        U5      nUR                  S5      nU R                  SUS   -   5        USS   H'  nU R                  5         U R                  SU-   5        M)     U R                  S5        g )Nr   z<!-- r   r   z     z -->)rE   splitr*   r+   )r,   rO   lineslines       r/   commentXMLWriter.commenth   se    d|

4 wq)*!"IDLLNNN7T>*  	vr   c                 ^    U R                   " U0 UD6nSU< U< S3nU R                  U5        g )N<z/>)stringifyattrsr*   r,   _TAG_argskwargsattrdatarO   s         r/   	simpletagXMLWriter.simpletagq   s-    &&77!8,tr   c                     U R                   " U0 UD6nSU< U< S3nU R                  U5        U R                  R                  U5        U R	                  5         g )Nrb   >)rc   r*   r&   appendrC   rd   s         r/   begintagXMLWriter.begintagv   sH    &&77 (+t

% r   c                     U R                   (       a  U R                   S   U:X  d   S5       eU R                   S	 U R                  5         SU-  nU R                  U5        g )Nznonmatching endtagz</%s>)r&   dedentr*   )r,   re   rO   s      r/   endtagXMLWriter.endtag}   sM    zzdjjn5K7KK5JJrNtr   c                     SnUS-  nSn[        S[        U5      U5       HW  n[        XXR-    5      nSnSn[        SX45       H  n	Xx-   XiX-    -   nSnM     U R                  U5        U R	                  5         MY     g )N         r   r    )rangelenhexStrr*   r+   )
r,   rO   
linelengthhexlinelength	chunksizeihexliner^   whitejs
             r/   dumphexXMLWriter.dumphex   s    
"Q	q#d)Z0ATan56GDE1m7|g!-&@@ 8 NN4 LLN 1r   c                 ,    U R                   S-   U l         g )Nr   r%   r5   s    r/   rC   XMLWriter.indent   s    ++a/r   c                 P    U R                   S:  d   eU R                   S-
  U l         g )Nr   r   r   r5   s    r/   rr   XMLWriter.dedent   s)    !###++a/r   c                 ,   U(       a#  U(       a   e[        UR                  5       5      nOU(       a  [        U5      S:X  d   eUS   nOgSnU HB  u  pV[        U[        [
        45      (       d  [        U5      nUSU< S[        U5      < S3-   nMD     U$ )Nr   r   r   ry   z="")sorteditemsr{   
isinstancebytesstr
escapeattr)r,   rf   rg   
attributesrO   attrvalues          r/   rc   XMLWriter.stringifyattrs   s    O8/Jt9>!>aJ%KDeeS\22E
j.?@@D & r   )r   r   r   r)   r(   r%   r!   r'   r$   r&   r   )T)F)TF)__name__
__module____qualname____firstlineno__INDENTr0   r6   r=   r9   r   rJ   rP   rS   r*   r+   r_   ri   rn   rs   r   rC   rr   rc   __static_attributes__r4   r   r/   r   r      sk     +Z6565+
00r   r   c                     [        U S5      n U R                  SS5      n U R                  SS5      n U R                  SS5      n U R                  SS	5      n U $ )
Nr
   &z&amp;rb   z&lt;rl   z&gt;z&#13;)r   r   rO   s    r/   rE   rE      sS    wD<<W%D<<V$D<<V$D<<g&DKr   c                 @    [        U 5      n U R                  SS5      n U $ )Nr   z&quot;)rE   r   r   s    r/   r   r      s     $<D<<X&DKr   c                 N    S n[        [        XR                  S5      5      5      $ )zInput is Unicode string.c                 j    [        U 5      nSUs=::  a  S::  a  O  OU S;  a  U $ S[        U5      -   S-   $ )N       z<&>z&#;)ordrepr)cns     r/   
escapecharescape8bit.<locals>.escapechar   s4    F>c>aunH$q'>C''r   zlatin-1)r   mapdecode)rO   r   s     r/   rN   rN      s"    ( 3z;;y#9:;;r   c                 |    [         R                  nSnU  H#  n[        U5      nX!US-	  S-     -   XS-     -   nM%     U$ )Nr         )rF   	hexdigitsr   )rV   hrr   r   s        r/   r|   r|      sL    A
AAJ16S.!!A#gJ.  Hr   )__doc__fontTools.misc.textToolsr   r   r   r   r   r"   rF   r   objectr   rE   r   rN   r|   r4   r   r/   <module>r      s?    0 E E 
 	 	\ \~
<r   