
    aji                    8   S r SSKJr  SSKJrJrJ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SKrSSKrSr\R$                  " S5      rSr\R-                  \R.                  " \" SS	5      S
\" SS5      \" SS5      S5      \5      r " S S\5      rS rS rS rS rg)z*xmlWriter.py -- Simple XML authoring class    )annotations)BinaryIOCallableTextIO)byteordstrjointobytestostrNz  zfontTools.ttx?	   )             i   i   )i  i  c                      \ rS rSr\SSS4           SS jjrS rS rSS j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   [        US5      (       dO  [        U[        [        R                  45      (       d  [        S5      e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 R7                  S5        U R9                  5         g ! [         a)    U R                  R                  S5        [$        U l         Nf = f)N- _utf8z!Only UTF-8 encoding is supported.writez]fileOrPath must be a file path (str or PathLike) if it isn't an object with a `write` method.wbTF    r      z&<?xml version="1.0" encoding="UTF-8"?>)lowerreplace	Exceptionsysstdouthasattr
isinstancestrosPathLike	TypeErrorfilenameopenfile_closeStreamr   r	   totyper
   indentwhitelinesep
newlinestrindentlevelstack
needindentidlefuncidlecounter	_writerawnewline)self
fileOrPathr/   r5   encodingr1   s         \C:\Users\13-19lat\Desktop\lekcja16.01.2026\pdf\Lib\site-packages\fontTools/misc/xmlWriter.py__init__XMLWriter.__init__   sm    >>##C,44S"=G?@@Jz7++j3*<==s  'MZ.DI $D DM"I %D	  IIOOC !DK
  ;;{3"kk"**5DO"kk*5DO
 ?@  	 IIOOBDK	 s   &F 0F>=F>c                    U $ N r9   s    r<   	__enter__XMLWriter.__enter__O   s    r   c                $    U R                  5         g r@   )close)r9   exception_typeexception_value	tracebacks       r<   __exit__XMLWriter.__exit__R   s    

r   c                    U R                   (       aL  [        U R                  [        [        R
                  45      (       a   eU R                  R                  5         g g r@   )r-   r%   r,   r&   r'   r(   rF   rB   s    r<   rF   XMLWriter.closeU   s>    !$))c2;;-?@@@@IIOO r   c                6    U R                  [        U5      US9  g)zWrites text.indentNr7   escape)r9   stringrP   s      r<   r   XMLWriter.writeZ   s    vf~f5r   c                2    U R                  SU-   S-   5        g)zWrites text in a CDATA section.z	<![CDATA[z]]>N)r7   r9   rS   s     r<   
writecdataXMLWriter.writecdata^   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)r7   
escape8bit)r9   datarZ   s      r<   	write8bitXMLWriter.write8bitb   s    
 	z$'u5r   c                6    U R                  [        U5      SS9  g)z Writes text without indentation.FrO   NrQ   rV   s     r<   write_noindentXMLWriter.write_noindenti   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)r4   r,   r   r2   r/   r.   rZ   )r9   r\   rP   rZ   ss        r<   r7   XMLWriter._writerawm   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   r1   r4   r6   r5   )r9   r6   s     r<   r8   XMLWriter.newlinew   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 -->)rR   splitr7   r8   )r9   r\   lineslines       r<   commentXMLWriter.comment   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/>)stringifyattrsr7   r9   _TAG_argskwargsattrdatar\   s         r<   	simpletagXMLWriter.simpletag   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 )Nro   >)rp   r7   r3   appendrP   rq   s         r<   begintagXMLWriter.begintag   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>)r3   dedentr7   )r9   rr   r\   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hexStrr7   r8   )
r9   r\   
linelengthhexlinelength	chunksizeihexlinerk   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   r2   rB   s    r<   rP   XMLWriter.indent   s    ++a/r   c                P    U R                   S:  d   eU R                   S-
  U l         g )Nr   r   r   rB   s    r<   r   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   r   z="")sorteditemsr   r%   bytesr&   
escapeattr)r9   rs   rt   
attributesr\   attrvalues          r<   rp   XMLWriter.stringifyattrs   s    O8/Jt9>!>aJ%KDeeS\22E
j.?@@D & r   )r-   r,   r*   r6   r5   r2   r/   r4   r1   r3   r.   )r:   z*str | os.PathLike[str] | BinaryIO | TextIOr/   r&   r5   zCallable[[], None] | Noner;   r&   r1   zstr | bytesreturnNone)r   r   )T)F)TF)__name__
__module____qualname____firstlineno__INDENTr=   rC   rJ   rF   r   rW   r]   r`   r7   r8   rl   rv   r{   r   r   rP   r   rp   __static_attributes__rA   r   r<   r   r      s     ".2"&0>0 0 ,	0
 0  0 
0d
6565+
00r   r   c                x   [        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 R                  [        5      nX:w  aK  S
n[	        U 5      n[        U 5      U:  a  [	        U SU 5      SS S-   n[        R                  SU[        5        U$ )zQEscape characters not allowed in `XML 1.0 <https://www.w3.org/TR/xml/#NT-Char>`_.r   &z&amp;ro   z&lt;ry   z&gt;z&#13;
   Nr   r~   z...zEIllegal XML character(s) found; replacing offending string %r with %r)	r
   r    	translateILLEGAL_XML_CHARSreprr   TTX_LOGwarningREPLACEMENT)r\   newDatamaxLenpreviews       r<   rR   rR      s    wD<<W%D<<V$D<<V$D<<g&Dnn./Gt*t9v4=)!B/%7GS	

 Nr   c                @    [        U 5      n U R                  SS5      n U $ )Nr   z&quot;)rR   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-   $ )Nr      z<&>z&#;)ordr   )cns     r<   
escapecharescape8bit.<locals>.escapechar   s4    F>c>aunH$q'>C''r   zlatin-1)r   mapdecode)r\   r   s     r<   r[   r[      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         )rS   	hexdigitsr   )rc   hrr   r   s        r<   r   r      sL    A
AAJ16S.!!A#gJ.  Hr   ) __doc__
__future__r   typingr   r   r   fontTools.misc.textToolsr   r   r	   r
   r"   r'   rS   logging	itertoolsr   	getLoggerr   r   dictfromkeyschainr   r   objectr   rR   r   r[   r   rA   r   r<   <module>r      s    0 " - - E E 
 	   	


O
,MMOOdDdDff 	 b bJ,
<r   