a
    ¥Q•h1  ã                   @   sÈ   d Z ddlZddlZejZG dd„ deƒZdd„ Zdd„ Zd	d
„ Z	d%dd„Z
dd„ Zdd„ Zdd„ Zd&dd„Zd'dd„Zdd„ Zdd„ Zd(dd „Zd)d"d#„Zed$krÄddlZddlZe e ¡ j¡ dS )*z6fontTools.misc.textTools.py -- miscellaneous routines.é    Nc                   @   s@   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚTagc                 C   s   t | tƒr|  d¡} | S ©Nzlatin-1)Ú
isinstanceÚbytesÚdecode)Úblob© r   úQ/var/www/sistema_ama/venv/lib/python3.9/site-packages/fontTools/misc/textTools.pyÚ	transcode   s    

zTag.transcodec                 C   s   t  | |  |¡¡S ©N)ÚstrÚ__new__r
   )ÚselfÚcontentr   r   r	   r      s    zTag.__new__c                 C   s   |   |¡ S r   )Ú__eq__©r   Úotherr   r   r	   Ú__ne__   s    z
Tag.__ne__c                 C   s   t  | |  |¡¡S r   )r   r   r
   r   r   r   r	   r      s    z
Tag.__eq__c                 C   s
   t  | ¡S r   )r   Ú__hash__©r   r   r   r	   r      s    zTag.__hash__c                 C   s
   |   d¡S r   )Úencoder   r   r   r	   Útobytes   s    zTag.tobytesN)
Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr
   r   r   r   r   r   r   r   r   r	   r      s   
r   c                 C   s   t tdd„ | D ƒƒƒS )z-Convert a list of hex strings to binary data.c                 s   s   | ]}t |tƒr|V  qd S r   )r   r   )Ú.0Úchunkr   r   r	   Ú	<genexpr>$   ó    zreadHex.<locals>.<genexpr>)ÚdeHexStrÚstrjoin)r   r   r   r	   ÚreadHex"   s    r"   c              	   C   sb   t |  ¡ ƒ} t| ƒd r | d } g }tdt| ƒdƒD ]$}| tt| ||d … dƒƒ¡ q4t|ƒS )z$Convert a hex string to binary data.é   Ú0r   é   )r!   ÚsplitÚlenÚrangeÚappendÚbytechrÚintÚ	bytesjoin)ZhexdataÚdataÚir   r   r	   r    '   s    "r    c                 C   s@   t j}d}| D ],}t|ƒ}|||d? d@   ||d@   }q|S )z$Convert binary data to a hex string.Ú é   é   )ÚstringÚ	hexdigitsÚbyteord)r-   ÚhÚrÚcr.   r   r   r	   ÚhexStr2   s    "r8   é    c                 C   s‚   g }d}t |ƒD ]@}| d@ r&d| }nd| }| d? } |d d s| |¡ d}q|r`| |¡ | ¡  | dv sxJ dƒ‚d |¡S )	Nr/   é   Ú1r$   é   )r   éÿÿÿÿz$number doesn't fit in number of bitsú )r(   r)   ÚreverseÚjoin)ÚlÚbitsÚitemsÚbinaryr.   r   r   r	   Ú
num2binary<   s    


rE   c                 C   s6   t |  ¡ ƒ} d}| D ]}|d> }|dkr|dB }q|S )Nr   r:   r$   )r!   r&   )ÚbinrA   Údigitr   r   r	   Ú
binary2numO   s    
rH   c                 C   s2   zt | dd„ d�W S  ty,   t | ƒ Y S 0 dS )zjReturn a sorted copy of a list. If there are only strings
    in the list, it will not consider case.
    c                 S   s   |   ¡ | fS r   )Úlower)Úar   r   r	   Ú<lambda>_   r   zcaselessSort.<locals>.<lambda>)ÚkeyN)ÚsortedÚ	TypeError)Úalistr   r   r	   ÚcaselessSortY   s    rP   c                 C   s4   t | ƒ} |dkr0t| ƒ| }|r0| d||  7 } | S )zýPad byte string 'data' with null bytes until its length is a
    multiple of 'size'.

    >>> len(pad(b'abcd', 4))
    4
    >>> len(pad(b'abcde', 2))
    6
    >>> len(pad(b'abcde', 4))
    8
    >>> pad(b'abcdef', 4) == b'abcdef\x00\x00'
    True
    r:   ó    )r   r'   )r-   ÚsizeÚ	remainderr   r   r	   Úpadd   s    rT   ÚasciiÚstrictc                 C   s   t | tƒs|  ||¡S | S d S r   )r   r   r   ©ÚsÚencodingÚerrorsr   r   r	   Útostry   s    
r[   c                 C   s"   t | tƒr|  ||¡S t| ƒS d S r   )r   r   r   r   rW   r   r   r	   r   €   s    
r   c                 C   s
   t | gƒS r   )r   )Únr   r   r	   r*   ‡   s    r*   c                 C   s   t | tƒr| S t| ƒS r   )r   r+   Úord)r7   r   r   r	   r4   ‹   s    r4   r/   c                 C   s   t |ƒ | ¡S r   )r[   r@   ©ÚiterableÚjoinerr   r   r	   r!   �   s    r!   r   c                 C   s   t |ƒ dd„ | D ƒ¡S )Nc                 s   s   | ]}t |ƒV  qd S r   )r   )r   Úitemr   r   r	   r   ”   r   zbytesjoin.<locals>.<genexpr>)r   r@   r^   r   r   r	   r,   “   s    r,   Ú__main__)r9   )rU   rV   )rU   rV   )r/   )r   )Ú__doc__Úastr2   Úliteral_evalZsafeEvalr   r   r"   r    r8   rE   rH   rP   rT   r[   r   r*   r4   r!   r,   r   ÚdoctestÚsysÚexitÚtestmodÚfailedr   r   r   r	   Ú<module>   s(   






