a
    ¥Q•hž  ã                   @   sl   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Z	G dd„ de
ƒZdd„ Zd	d
„ Zdd„ Zdd„ ZdS )z*xmlWriter.py -- Simple XML authoring classé    )ÚbyteordÚstrjoinÚtobytesÚtostrNz  c                   @   s¬   e Zd Zedddfdd„Zdd„ Zdd	„ Zd
d„ Zd*dd„Zdd„ Z	d+dd„Z
dd„ Zd,dd„Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ ZdS )-Ú	XMLWriterNÚutf_8Ú
c                 C   s  |  ¡  dd¡ dd¡dkr$tdƒ‚|dkr2tj}t|dƒsV|| _t|dƒ| _d| _	nd | _|| _d	| _	z| j 
d
¡ t| _W n$ ty¢   | j 
d¡ t| _Y n0 |  |¡| _|d u rÈ|  tj¡| _n|  |¡| _d| _g | _d| _|| _d| _|  d¡ |  ¡  d S )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    © r+   úQ/var/www/sistema_ama/venv/lib/python3.9/site-packages/fontTools/misc/xmlWriter.pyÚ__init__   s8    


zXMLWriter.__init__c                 C   s   | S ©Nr+   ©r(   r+   r+   r,   Ú	__enter__9   s    zXMLWriter.__enter__c                 C   s   |   ¡  d S r.   )Úclose)r(   Úexception_typeÚexception_valueÚ	tracebackr+   r+   r,   Ú__exit__<   s    zXMLWriter.__exit__c                 C   s   | j r| j ¡  d S r.   )r   r   r1   r/   r+   r+   r,   r1   ?   s    zXMLWriter.closeTc                 C   s   | j t|ƒ|d� dS )zWrites text.©ÚindentN©r&   Úescape)r(   Ústringr7   r+   r+   r,   r   C   s    zXMLWriter.writec                 C   s   |   d| d ¡ dS )zWrites text in a CDATA section.z	<![CDATA[z]]>N)r&   ©r(   r:   r+   r+   r,   Ú
writecdataG   s    zXMLWriter.writecdataFc                 C   s   | j t|ƒ|d� dS )z¸Writes 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(   Údatar=   r+   r+   r,   Ú	write8bitK   s    zXMLWriter.write8bitc                 C   s   | j t|ƒdd� dS )z Writes text without indentation.Fr6   Nr8   r;   r+   r+   r,   Úwrite_noindentR   s    zXMLWriter.write_noindentc                 C   sN   |r$| j r$| j | j| j ¡ d| _ | j|dd�}|r>| ¡ }| j |¡ dS )z Writes bytes, possibly indented.r   r   )r*   N)r#   r   r   r!   r   r   r=   )r(   r?   r7   r=   Úsr+   r+   r,   r&   V   s    
zXMLWriter._writerawc                 C   sB   | j  | j¡ d| _| j}|d s4| jd ur4|  ¡  |d | _d S )Nr   éd   )r   r   r    r#   r%   r$   )r(   r%   r+   r+   r,   r'   `   s    zXMLWriter.newlinec                 C   sZ   t |ƒ}| d¡}|  d|d  ¡ |dd … D ]}|  ¡  |  d| ¡ q0|  d¡ d S )Nr   z<!-- r   r   z     z -->)r9   Úsplitr&   r'   )r(   r?   ÚlinesÚliner+   r+   r,   Úcommenth   s    
zXMLWriter.commentc                 O   s*   | j |i |¤Ž}d||f }|  |¡ d S )Nz<%s%s/>)Ústringifyattrsr&   ©r(   Ú_TAG_ÚargsÚkwargsZattrdatar?   r+   r+   r,   Ú	simpletagq   s    zXMLWriter.simpletagc                 O   s>   | j |i |¤Ž}d||f }|  |¡ | j |¡ |  ¡  d S )Nz<%s%s>)rH   r&   r"   Úappendr7   rI   r+   r+   r,   Úbegintagv   s
    
zXMLWriter.begintagc                 C   sB   | j r| j d |ksJ dƒ‚| j d= |  ¡  d| }|  |¡ d S )Néÿÿÿÿznonmatching endtagz</%s>)r"   Údedentr&   )r(   rJ   r?   r+   r+   r,   Úendtag}   s
    zXMLWriter.endtagc           
      C   s†   d}|d }d}t dt|ƒ|ƒD ]`}t|||| … ƒ}d}d}t d||ƒD ] }	|| ||	|	| …  }d}qL|  |¡ |  ¡  q d S )Né   é   é   r   r
   ú )ÚrangeÚlenÚhexStrr&   r'   )
r(   r?   Z
linelengthZhexlinelengthÚ	chunksizeÚiZhexlinerF   ÚwhiteÚjr+   r+   r,   Údumphex„   s    
zXMLWriter.dumphexc                 C   s   | j d | _ d S )Nr   ©r!   r/   r+   r+   r,   r7   ’   s    zXMLWriter.indentc                 C   s   | j dksJ ‚| j d | _ d S )Nr   r   r_   r/   r+   r+   r,   rQ   •   s    zXMLWriter.dedentc                 O   s|   |r|rJ ‚t | ¡ ƒ}n"|r8t|ƒdks.J ‚|d }ndS d}|D ]2\}}t|ttfƒsbt|ƒ}|d|t|ƒf  }qD|S )Nr   r   r
   z %s="%s")ÚsortedÚitemsrX   Ú
isinstanceÚbytesÚstrÚ
escapeattr)r(   rK   rL   Ú
attributesr?   ÚattrÚvaluer+   r+   r,   rH   ™   s    
zXMLWriter.stringifyattrs)T)F)TF)Ú__name__Ú
__module__Ú__qualname__ÚINDENTr-   r0   r5   r1   r   r<   r@   rA   r&   r'   rG   rM   rO   rR   r^   r7   rQ   rH   r+   r+   r+   r,   r      s,   ú
-



	r   c                 C   s>   t | dƒ} |  dd¡} |  dd¡} |  dd¡} |  dd	¡} | S )
Nr   ú&z&amp;ú<z&lt;ú>z&gt;úz&#13;)r   r   ©r?   r+   r+   r,   r9   ª   s    
r9   c                 C   s   t | ƒ} |  dd¡} | S )Nú"z&quot;)r9   r   rq   r+   r+   r,   re   ³   s    re   c                 C   s   dd„ }t t||  d¡ƒƒS )zInput is Unicode string.c                 S   s@   t | ƒ}d|  krdkr,n n| dvr,| S dt|ƒ d S d S )Né    é   z<&>z&#ú;)ÚordÚrepr)ÚcÚnr+   r+   r,   Ú
escapechar¼   s     zescape8bit.<locals>.escapecharzlatin-1)r   ÚmapÚdecode)r?   rz   r+   r+   r,   r>   ¹   s    r>   c                 C   s@   t j}d}| D ],}t|ƒ}|||d? d@   ||d@   }q|S )Nr
   é   é   )r:   Ú	hexdigitsr   )rB   ÚhÚrrx   r[   r+   r+   r,   rY   Æ   s    "rY   )Ú__doc__ÚfontTools.misc.textToolsr   r   r   r   r   r   r:   rl   Úobjectr   r9   re   r>   rY   r+   r+   r+   r,   Ú<module>   s     	