a
    Qh                     @   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 )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(   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 )Nz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     	