o
    i3                     @   s  d dl mZ d dlmZ G dd deZG dd deZG dd deZG d	d
 d
eZG dd deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.eZG d/d0 d0eZG d1d2 d2eZG d3d4 d4eZG d5d6 d6eZG d7d8 d8eZG d9d: d:eZ d;S )<    )VoltLibError)
NamedTuplec                   @   sF   e Zd ZU eed< eed< eed< eed< eed< eed< dd Zd	S )
PosadvdxdyZadv_adjust_byZdx_adjust_byZdy_adjust_byc                 C   s|   d}dD ]3}t | |}|d ur7|d|  d| 7 }t | | di }| D ]\}}|d| d| 7 }q(q|d7 }|S )Nz POS)r   r   r    Z
_adjust_byz ADJUST_BY  AT z END_POS)getattrupperitems)selfresattrvalueZ	adjust_bysizeZ
adjustment r   d/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/fontTools/voltLib/ast.py__str__   s   
zPos.__str__N)__name__
__module____qualname__int__annotations__dictr   r   r   r   r   r      s   
 r   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	ElementNc                 C   s
   || _ d S Nlocation)r   r   r   r   r   __init__   s   
zElement.__init__c                 C   s   d S r   r   )r   builderr   r   r   build      zElement.buildc                 C   s   t r   )NotImplementedErrorr   r   r   r   r   !   r"   zElement.__str__r   r   r   r   r   r!   r   r   r   r   r   r      s    
r   c                   @      e Zd ZdS )	StatementNr   r   r   r   r   r   r   r'   %       r'   c                   @   r&   )
ExpressionNr(   r   r   r   r   r*   )   r)   r*   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )VoltFilec                 C   s   t j| d d g | _d S )Nr   )r'   r   
statementsr$   r   r   r   r   .   s   
zVoltFile.__init__c                 C   s   | j D ]}|| qd S r   )r,   r!   )r   r    sr   r   r   r!   2   s   
zVoltFile.buildc                 C   s   dd dd | jD  d S )N
c                 s       | ]}t |V  qd S r   str.0r-   r   r   r   	<genexpr>7       z#VoltFile.__str__.<locals>.<genexpr>z END
)joinr,   r$   r   r   r   r   6   s   zVoltFile.__str__Nr%   r   r   r   r   r+   -   s    r+   c                   @      e Zd ZdddZdd ZdS )GlyphDefinitionNc                 C   s.   t | | || _|| _|| _|| _|| _d S r   )r'   r   nameidunicodetype
components)r   r9   gidZgunicodegtyper=   r   r   r   r   r   ;   s   
zGlyphDefinition.__init__c                 C   s   d| j  d| j }| jd ur4t| jdkr*ddd | jD }|d| d7 }n
|d	| jd
  7 }| jd urA|d| j 7 }| jd urN|d| j 7 }|d7 }|S )NzDEF_GLYPH "z" ID    ,c                 s   s    | ]	}d |dV  qdS )zU+Z04XNr   )r3   ur   r   r   r4   G       z*GlyphDefinition.__str__.<locals>.<genexpr>z UNICODEVALUES ""z	 UNICODE r   z TYPE z COMPONENTS z
 END_GLYPH)r9   r:   r;   lenr6   r<   r=   )r   r   Zunicodesr   r   r   r   C   s   


zGlyphDefinition.__str__r   r   r   r   r   r   r   r   r   r   r8   :   s    
r8   c                   @   s(   e Zd ZdddZdddZdd ZdS )	GroupDefinitionNc                 C   s"   t | | || _|| _d | _d S r   )r'   r   r9   enumglyphs_)r   r9   rH   r   r   r   r   r   T      
zGroupDefinition.__init__c                 C   sd   |d ur| j |v rtd| j  | j| jd u r/|d u r"t| j h}n|| j  | j|| _| jS )NzGroup "%s" contains itself.)r9   r   r   rI   setaddrH   glyphSet)r   groupsr   r   r   rM   Z   s   
zGroupDefinition.glyphSetc                 C   s(   | j rt| j p	d}d| j d| dS )N zDEF_GROUP ""
z

END_GROUP)rH   r1   r9   r   rH   r   r   r   r   g   s   zGroupDefinition.__str__r   )r   r   r   r   rM   r   r   r   r   r   rG   S   s    

rG   c                   @   *   e Zd ZdZd	ddZdd Zdd ZdS )
	GlyphNamez%A single glyph name, such as cedilla.Nc                 C      t | | || _d S r   )r*   r   glyph)r   rU   r   r   r   r   r   o      
zGlyphName.__init__c                 C   s   | j fS r   rU   r$   r   r   r   rM   s   s   zGlyphName.glyphSetc                 C      d| j  dS )Nz GLYPH "rD   rW   r$   r   r   r   r   v      zGlyphName.__str__r   r   r   r   __doc__r   rM   r   r   r   r   r   rS   l   s
    
rS   c                   @   s4   e Zd ZdZdddZdd ZdddZd	d
 ZdS )EnumzAn enumNc                 C   rT   r   )r*   r   rH   )r   rH   r   r   r   r   r   }   rV   zEnum.__init__c                 c   s    |   D ]}|V  qd S r   )rM   )r   er   r   r   __iter__   s   zEnum.__iter__c                 C   sF   g }| j D ]}t|ttfr||| q||  qt|S r   )rH   
isinstance	GroupNamer\   extendrM   tuple)r   rN   Zglyphselementr   r   r   rM      s   
zEnum.glyphSetc                 C   s"   d dd | jD }d| dS )NrO   c                 s   r/   r   r0   )r3   r]   r   r   r   r4      r5   zEnum.__str__.<locals>.<genexpr>z ENUMz	 END_ENUM)r6   rH   rQ   r   r   r   r      s   zEnum.__str__r   )r   r   r   r[   r   r^   rM   r   r   r   r   r   r\   z   s    

	r\   c                   @   s,   e Zd ZdZd	ddZd	ddZdd ZdS )
r`   zA glyph groupNc                 C      t | | || _|| _d S r   )r*   r   groupparser_)r   re   parserr   r   r   r   r         
zGroupName.__init__c                 C   s:   | j | j}|d ur||| _| jS td| j | j)Nz!Group "%s" is used but undefined.)rf   Zresolve_groupre   rM   rI   r   r   )r   rN   re   r   r   r   rM      s   zGroupName.glyphSetc                 C   rX   )Nz GROUP "rD   )re   r$   r   r   r   r      rY   zGroupName.__str__r   rZ   r   r   r   r   r`      s
    


r`   c                   @   rR   )
RangezA glyph rangeNc                 C   "   t | | || _|| _|| _d S r   )r*   r   startendrg   )r   rk   rl   rg   r   r   r   r   r      rJ   zRange.__init__c                 C   s   t | j| j| jS r   )rb   rg   Zglyph_rangerk   rl   r$   r   r   r   rM         zRange.glyphSetc                 C   s   d| j  d| j dS )Nz RANGE "z" TO "rD   )rk   rl   r$   r   r   r   r      rm   zRange.__str__r   rZ   r   r   r   r   ri      s
    
ri   c                   @   r7   )ScriptDefinitionNc                 C   rj   r   )r'   r   r9   taglangs)r   r9   ro   rp   r   r   r   r   r      rJ   zScriptDefinition.__init__c                 C   T   d}| j d ur|d| j  d7 }|d| j d7 }| jD ]}|| 7 }q|d7 }|S )NZ
DEF_SCRIPT NAME "rD    TAG ""

Z
END_SCRIPT)r9   ro   rp   )r   r   langr   r   r   r         

zScriptDefinition.__str__r   rF   r   r   r   r   rn          
rn   c                   @   r7   )LangSysDefinitionNc                 C   rj   r   )r'   r   r9   ro   features)r   r9   ro   ry   r   r   r   r   r      rJ   zLangSysDefinition.__init__c                 C   rq   )NZDEF_LANGSYSrr   rD   rs   rt   zEND_LANGSYS
)r9   ro   ry   )r   r   featurer   r   r   r      rv   zLangSysDefinition.__str__r   rF   r   r   r   r   rx      rw   rx   c                   @   r7   )FeatureDefinitionNc                 C   rj   r   )r'   r   r9   ro   lookups)r   r9   ro   r|   r   r   r   r   r      rJ   zFeatureDefinition.__init__c                 C   sD   d| j  d| j d}|dddd | jD  d 7 }|d7 }|S )	NzDEF_FEATURE NAME "z" TAG "rP   r   c                 s   s    | ]	}d | dV  qdS )zLOOKUP "rD   Nr   )r3   lr   r   r   r4      rC   z,FeatureDefinition.__str__.<locals>.<genexpr>r.   zEND_FEATURE
)r9   ro   r6   r|   )r   r   r   r   r   r      s   "zFeatureDefinition.__str__r   rF   r   r   r   r   r{      rw   r{   c                   @   s    e Zd Z	dddZdd ZdS )LookupDefinitionNc                 C   sL   t | | || _|| _|| _|| _|| _|| _|| _|| _	|	| _
|
| _d S r   )r'   r   r9   process_baseprocess_marksmark_glyph_set	directionreversalcommentscontextsubpos)r   r9   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   
zLookupDefinition.__init__c                 C   s.  d| j  d}|d| jrdpd 7 }| jr<|d7 }| jr'|d| j d7 }nt| jtr7|d| j d7 }n	|d7 }n|d	7 }| jd urM|d
| j 7 }| jrT|d7 }| jd urh| j	dd}|d| d7 }| j
r{|dddd | j
D  7 }n|d7 }| jr|d| j 7 }| jr|d| j 7 }|S )NzDEF_LOOKUP "rD   r   ZPROCESS_BASEZ	SKIP_BASEz PROCESS_MARKS zMARK_GLYPH_SET "ALLz SKIP_MARKSz DIRECTION z	 REVERSALr.   z\nz
COMMENTS "c                 s   r/   r   r0   r3   cr   r   r   r4     r5   z+LookupDefinition.__str__.<locals>.<genexpr>z
IN_CONTEXT
END_CONTEXT)r9   r   r   r   r_   r1   r   r   r   replacer   r6   r   r   )r   r   r   r   r   r   r     s2   


 zLookupDefinition.__str__r   rF   r   r   r   r   r~      s    
r~   c                   @   r7   )SubstitutionDefinitionNc                 C   rT   r   )r'   r   mapping)r   r   r   r   r   r   r   &  rV   zSubstitutionDefinition.__init__c                 C   sb   d}| j  D ]#\}}ddd |D }ddd |D }|d| d| d7 }q|d	7 }|S )
NzAS_SUBSTITUTION
rO   c                 s   r/   r   r0   r2   r   r   r   r4   -  r5   z1SubstitutionDefinition.__str__.<locals>.<genexpr>c                 s   r/   r   r0   )r3   dr   r   r   r4   .  r5   ZSUBz
WITHz	
END_SUB
ZEND_SUBSTITUTION)r   r   r6   )r   r   srcdstr   r   r   r   *  s   zSubstitutionDefinition.__str__r   rF   r   r   r   r   r   %      
r   c                   @   r&   )SubstitutionSingleDefinitionNr(   r   r   r   r   r   4  r)   r   c                   @   r&   )SubstitutionMultipleDefinitionNr(   r   r   r   r   r   8  r)   r   c                   @   r&   )SubstitutionLigatureDefinitionNr(   r   r   r   r   r   <  r)   r   c                   @   r&   )SubstitutionAlternateDefinitionNr(   r   r   r   r   r   @  r)   r   c                   @   r&   )+SubstitutionReverseChainingSingleDefinitionNr(   r   r   r   r   r   D  r)   r   c                   @   r7   )PositionAttachDefinitionNc                 C   rd   r   )r'   r   coveragecoverage_to)r   r   r   r   r   r   r   r   I  rh   z!PositionAttachDefinition.__init__c                 C   sf   d dd | jD }d| d}| jD ]\}}d dd |D }|| d| d7 }q|d	7 }|S )
NrO   c                 s   r/   r   r0   r   r   r   r   r4   O  r5   z3PositionAttachDefinition.__str__.<locals>.<genexpr>zAS_POSITION
ATTACHz
TOc                 s   r/   r   r0   r   r   r   r   r4   R  r5   z AT ANCHOR "rD   
END_ATTACH
END_POSITION)r6   r   r   )r   r   r   anchorr   r   r   r   N  s   z PositionAttachDefinition.__str__r   rF   r   r   r   r   r   H      
r   c                   @   r7   )PositionAttachCursiveDefinitionNc                 C   rd   r   )r'   r   coverages_exitcoverages_enter)r   r   r   r   r   r   r   r   Y  rh   z(PositionAttachCursiveDefinition.__init__c                 C   sl   d}| j D ]}ddd |D }|d| 7 }q| jD ]}ddd |D }|d| 7 }q|d7 }|S )	NzAS_POSITION
ATTACH_CURSIVErO   c                 s   r/   r   r0   r   r   r   r   r4   a  r5   z:PositionAttachCursiveDefinition.__str__.<locals>.<genexpr>z
EXIT c                 s   r/   r   r0   r   r   r   r   r4   d  r5   z
ENTER r   )r   r6   r   r   r   r   r   r   r   r   ^  s   

z'PositionAttachCursiveDefinition.__str__r   rF   r   r   r   r   r   X  r   r   c                   @   r7   )PositionAdjustPairDefinitionNc                 C   rj   r   )r'   r   coverages_1coverages_2adjust_pair)r   r   r   r   r   r   r   r   r   k  rJ   z%PositionAdjustPairDefinition.__init__c              
   C   s   d}| j D ]}ddd |D }|d| 7 }q|d7 }| jD ]}ddd |D }|d| 7 }q |d7 }| j D ]\\}}\}}|d| d| d	| | d7 }q=|d
7 }|S )NzAS_POSITION
ADJUST_PAIR
r   c                 s   r/   r   r0   r   r   r   r   r4   t  r5   z7PositionAdjustPairDefinition.__str__.<locals>.<genexpr>z FIRST r.   c                 s   r/   r   r0   r   r   r   r   r4   x  r5   z SECOND  BY
END_ADJUST
END_POSITION)r   r6   r   r   r   )r   r   r   Zid_1Zid_2Zpos_1Zpos_2r   r   r   r   q  s   

"z$PositionAdjustPairDefinition.__str__r   rF   r   r   r   r   r   j  rw   r   c                   @   r7   )PositionAdjustSingleDefinitionNc                 C   rT   r   )r'   r   adjust_single)r   r   r   r   r   r   r     rV   z'PositionAdjustSingleDefinition.__init__c                 C   sF   d}| j D ]\}}ddd |D }|| d| 7 }q|d7 }|S )NzAS_POSITION
ADJUST_SINGLErO   c                 s   r/   r   r0   r   r   r   r   r4     r5   z9PositionAdjustSingleDefinition.__str__.<locals>.<genexpr>r   r   )r   r6   )r   r   r   r   r   r   r   r     s   z&PositionAdjustSingleDefinition.__str__r   rF   r   r   r   r   r     r   r   c                   @   r7   )ContextDefinitionNc                 C   s@   t | | || _|d ur|ng | _|d ur|| _d S g | _d S r   )r'   r   ex_or_inleftright)r   r   r   r   r   r   r   r   r     s   zContextDefinition.__init__c                 C   sv   | j d }| jD ]}ddd |D }|d| d7 }q| jD ]}ddd |D }|d| d7 }q |d7 }|S )	Nr.   rO   c                 s   r/   r   r0   r   r   r   r   r4     r5   z,ContextDefinition.__str__.<locals>.<genexpr>z LEFTc                 s   r/   r   r0   r   r   r   r   r4     r5   z RIGHTZEND_CONTEXT)r   r   r6   r   r   r   r   r   r     s   


zContextDefinition.__str__)NNNrF   r   r   r   r   r     rw   r   c                   @   r7   )AnchorDefinitionNc                 C   s4   t | | || _|| _|| _|| _|| _|| _d S r   )r'   r   r9   r>   
glyph_name	componentlockedr   )r   r9   r>   r   r   r   r   r   r   r   r   r     s   
zAnchorDefinition.__init__c                 C   s@   | j rdpd}d| j d| j d| j d| j | d| j dS )	Nz LOCKEDrO   zDEF_ANCHOR "z" ON z GLYPH z COMPONENT r	   z END_ANCHOR)r   r9   r>   r   r   r   )r   r   r   r   r   r     s   
zAnchorDefinition.__str__r   rF   r   r   r   r   r     s    
	r   c                   @   r7   )SettingDefinitionNc                 C   rd   r   )r'   r   r9   r   )r   r9   r   r   r   r   r   r     rh   zSettingDefinition.__init__c                 C   sZ   | j du r	| j S t| j ttfr$ddd | j D }| j d| S | j d| j  S )NTr   c                 s   r/   r   r0   )r3   vr   r   r   r4     r5   z,SettingDefinition.__str__.<locals>.<genexpr>)r   r9   r_   rb   listr6   )r   r   r   r   r   r     s   
zSettingDefinition.__str__r   rF   r   r   r   r   r     r   r   N)!ZfontTools.voltLib.errorr   typingr   r   objectr   r'   r*   r+   r8   rG   rS   r\   r`   ri   rn   rx   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s<    :