U
    ºmœd´  ã                   @   s~   d dl mZ d dlmZ d dlmZ d dlZd dlZd dlZe 	e
¡ZG dd„ deƒZdZG dd	„ d	eƒZG d
d„ deƒZdS )é    )ÚttLib)ÚsafeEval)ÚDefaultTableNc                   @   s   e Zd ZdS )ÚTTXParseErrorN)Ú__name__Ú
__module__Ú__qualname__© r	   r	   úQ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/fontTools/misc/xmlReader.pyr      s   r   i @  c                   @   sH   e Zd Zddd„Zddd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dS )Ú	XMLReaderNFc                 C   s„   |dkrt j}t|dƒs,t|dƒ| _d| _n|| _d| _|| _|| _|d k	rhddlm	} |dd	ƒ || _
d | _g | _|| _d| _d S )
Nú-ÚreadÚrbTFr   )ÚdeprecateArgumentÚquietzconfigure logging instead)ÚsysÚstdinÚhasattrÚopenÚfileÚ_closeStreamÚttFontÚprogressZfontTools.misc.loggingToolsr   r   ÚrootÚcontentStackÚcontentOnlyÚ	stackSize)ÚselfZ
fileOrPathr   r   r   r   r   r	   r	   r
   Ú__init__   s"    

zXMLReader.__init__c                 C   s‚   |r|  j d7  _ | jrR| j dd¡ | j ¡ }| j d|d pBd¡ | j d¡ |  | j¡ | jrl|  ¡  |r~|  j d8  _ d S )Né   r   é   éd   )	r   r   r   ÚseekÚtellÚsetÚ
_parseFiler   Úclose)r   ZrootlessZfileSizer	   r	   r
   r   ,   s    
zXMLReader.readc                 C   s   | j  ¡  d S ©N)r   r&   )r   r	   r	   r
   r&   :   s    zXMLReader.closec                 C   s~   ddl m} |ƒ }| j|_| j|_| j|_d}| t	¡}|sJ| 
|d¡ qz|t|ƒ }| jrl| j |d ¡ | 
|d¡ q.d S )Nr   )ÚParserCreater   r!   )Zxml.parsers.expatr(   Ú_startElementHandlerÚStartElementHandlerÚ_endElementHandlerÚEndElementHandlerÚ_characterDataHandlerÚCharacterDataHandlerr   ÚBUFSIZEÚParseÚlenr   r$   )r   r   r(   ÚparserÚposÚchunkr	   r	   r
   r%   =   s    
zXMLReader._parseFilec                 C   sŽ  | j dkr&| jr&| j g ¡ d| _ d S | j }|d | _ | d¡}|d k	r|t| jdƒrftj 	| jj
¡}nt ¡ }tj ||¡}|sî|dkr”td| ƒ‚| jjd krÞ| jjsÞ| d¡}|d k	rÞt|ƒdkrÖtd	| d	 ƒ}|| j_| j g ¡ �nœ|dk�rô|d k	�r*t|| j| jƒ}| ¡  | j g ¡ d S t |¡}d
| }	| j�rP| j |	¡ t |	¡ |dk�rltj}
n@d|k�sŽd|k�r”t|d ƒ�r”t}
nt |¡}
|
d k�r¬t}
|dk�rÐ|| jk�rÐ| j| | _n|
|ƒ| _| j| j|< | j g ¡ n–|dk�r:|d k	�r:t|| j| jdd�}| ¡  | j g ¡ |j | _ nP|dk�rd| j g ¡ ||| jd f| _ n&g }| jd  |||f¡ | j |¡ d S )Nr   r    ÚsrcÚnamer   zillegal root tag: %sÚsfntVersioné   ú"zParsing '%s' table...Ú
GlyphOrderÚERRORÚrawZlocaT)r   éÿÿÿÿ)!r   r   r   ÚappendÚgetr   r   ÚosÚpathÚdirnamer6   ÚgetcwdÚjoinr   r   ÚreaderZtablesr1   r   r7   r   r   r   r   ZxmlToTagÚsetLabelÚlogÚinfor:   r   ZgetTableClassÚcurrentTabler   )r   r6   Úattrsr   ZsubFilerB   r7   Z	subReaderÚtagÚmsgZ
tableClassÚlr	   r	   r
   r)   P   sp    







"




zXMLReader._startElementHandlerc                 C   sn   | j dkrj|dkrZ| jd rZt| jd d tƒrZ| jd d dkrZ| jd d  |7  < n| jd  |¡ d S )Nr   Ú
r=   )r   r   Ú
isinstanceÚstrr>   )r   Údatar	   r	   r
   r-   •   s    
ÿþýüzXMLReader._characterDataHandlerc                 C   s`   | j d | _ | jd= | js\| j dkr,d | _n0| j dkr\| j\}}}| j |||| j¡ d | _d S )Nr   r=   r    )r   r   r   r   rI   ZfromXMLr   )r   r6   rJ   Úcontentr	   r	   r
   r+   ¥   s    

zXMLReader._endElementHandler)NNF)F)
r   r   r   r   r   r&   r%   r)   r-   r+   r	   r	   r	   r
   r      s        ÿ

Er   c                   @   s2   e Zd Zddd„Zddd„Zddd	„Zd
d„ ZdS )ÚProgressPrinterr!   c                 C   s   t |ƒ d S r'   ©Úprint)r   ÚtitleÚmaxvalr	   r	   r
   r   ²   s    zProgressPrinter.__init__Nc                 C   s   d S r'   r	   )r   ÚvalrW   r	   r	   r
   r$   µ   s    zProgressPrinter.setr   c                 C   s   d S r'   r	   )r   rX   r	   r	   r
   Ú	increment¸   s    zProgressPrinter.incrementc                 C   s   t |ƒ d S r'   rT   )r   Útextr	   r	   r
   rF   »   s    zProgressPrinter.setLabel)r!   )N)r   )r   r   r   r   r$   rY   rF   r	   r	   r	   r
   rS   ±   s   


rS   )Z	fontToolsr   ZfontTools.misc.textToolsr   Z#fontTools.ttLib.tables.DefaultTabler   r   r@   ÚloggingÚ	getLoggerr   rG   Ú	Exceptionr   r/   Úobjectr   rS   r	   r	   r	   r
   Ú<module>   s   
 