a
    w=ic                     @   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rd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)Zblob r   i/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/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   hexStr3   s    "r7       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    


rD   c                 C   s6   t |  } d}| D ]}|d> }|dkr|dB }q|S )Nr   r9   r#   )r    r%   )binr@   digitr   r   r   
binary2numP   s    
rG   c                 C   s2   zt | dd dW S  ty,   t |  Y S 0 dS )zdReturn 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   caselessSortZ   s    rO   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
	r9       )r   r&   )r,   size	remainderr   r   r   pade   s    rS   asciistrictc                 C   s   t | ts| ||S | S d S r
   )r   r   r   sencodingerrorsr   r   r   tostrz   s    
rZ   c                 C   s"   t | tr| ||S t| S d S r
   )r   r   r   r   rV   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)r6   r   r   r   r3      s    r3   r.   c                 C   s   t || S r
   )rZ   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__)r8   )rT   rU   )rT   rU   )r.   )r   )__doc__astr1   literal_evalZsafeEvalr   r   r!   r   r7   rD   rG   rO   rS   rZ   r   r)   r3   r    r+   r   doctestsysexittestmodfailedr   r   r   r   <module>   s(   

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