a
    èÝEbž  ã                   @   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)ÚselfZ
fileOrPathr   r$   Úencodingr    © r*   úX/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/fontTools/misc/xmlWriter.pyÚ__init__   s8    


zXMLWriter.__init__c                 C   s   | S ©Nr*   ©r(   r*   r*   r+   Ú	__enter__4   s    zXMLWriter.__enter__c                 C   s   |   ¡  d S r-   )Úclose)r(   Zexception_typeZexception_valueÚ	tracebackr*   r*   r+   Ú__exit__7   s    zXMLWriter.__exit__c                 C   s   | j r| j ¡  d S r-   )r   r   r0   r.   r*   r*   r+   r0   :   s    zXMLWriter.closeTc                 C   s   | j t|ƒ|d� dS )zWrites text.©ÚindentN©r&   Úescape)r(   Ústringr4   r*   r*   r+   r   >   s    zXMLWriter.writec                 C   s   |   d| d ¡ dS )zWrites text in a CDATA section.z	<![CDATA[z]]>N)r&   ©r(   r7   r*   r*   r+   Ú
writecdataB   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+   Ú	write8bitF   s    zXMLWriter.write8bitc                 C   s   | j t|ƒdd� dS )z Writes text without indentation.Fr3   Nr5   r8   r*   r*   r+   Úwrite_noindentM   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<   r4   r:   Úsr*   r*   r+   r&   Q   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 -->)r6   Úsplitr&   r'   )r(   r<   ÚlinesÚliner*   r*   r+   Úcommentc   s    
zXMLWriter.commentc                 O   s*   | j |i |¤Ž}d||f }|  |¡ d S )Nz<%s%s/>)Ústringifyattrsr&   ©r(   Ú_TAG_ÚargsÚkwargsZattrdatar<   r*   r*   r+   Ú	simpletagl   s    zXMLWriter.simpletagc                 O   s>   | j |i |¤Ž}d||f }|  |¡ | j |¡ |  ¡  d S )Nz<%s%s>)rE   r&   r"   Úappendr4   rF   r*   r*   r+   Úbegintagq   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(   rG   r<   r*   r*   r+   Úendtagx   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hexlinerC   ÚwhiteÚjr*   r*   r+   Údumphex   s    
zXMLWriter.dumphexc                 C   s   | j d | _ d S )Nr   ©r!   r.   r*   r*   r+   r4   �   s    zXMLWriter.indentc                 C   s   | j dksJ ‚| j d | _ d S )Nr   r   r\   r.   r*   r*   r+   rN   �   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ÚitemsrU   Ú
isinstanceÚbytesÚstrÚ
escapeattr)r(   rH   rI   Ú
attributesr<   ÚattrÚvaluer*   r*   r+   rE   ”   s    
zXMLWriter.stringifyattrs)T)F)TF)Ú__name__Ú
__module__Ú__qualname__ÚINDENTr,   r/   r2   r0   r   r9   r=   r>   r&   r'   rD   rJ   rL   rO   r[   r4   rN   rE   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+   r6   ¥   s    
r6   c                 C   s   t | ƒ} |  dd¡} | S )Nú"z&quot;)r6   r   rn   r*   r*   r+   rb   ­   s    rb   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<   rw   r*   r*   r+   r;   ²   s    r;   c                 C   s@   t j}d}| D ],}t|ƒ}|||d? d@   ||d@   }q|S )Nr
   é   é   )r7   Ú	hexdigitsr   )r?   ÚhÚrru   rX   r*   r*   r+   rV   ¼   s    "rV   )Ú__doc__ZfontTools.misc.textToolsr   r   r   r   r   r   r7   ri   Úobjectr   r6   rb   r;   rV   r*   r*   r*   r+   Ú<module>   s    
