U
    Q»{jª3  ã                   @   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d9S ):é    )Ú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 ]f}t | |ƒ}|d k	r|d| ¡ › d|› �7 }t | |› d�i ƒ}| ¡ D ]\}}|d|› d|› �7 }qPq|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   úT/var/www/html/bwave/python/venv/lib/python3.8/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   s    zElement.buildc                 C   s   t ‚d S r   )ÚNotImplementedError©r   r   r   r   r   !   s    zElement.__str__)N©r   r   r   r   r!   r   r   r   r   r   r      s   
r   c                   @   s   e Zd ZdS )Ú	StatementN©r   r   r   r   r   r   r   r%   %   s   r%   c                   @   s   e Zd ZdS )Ú
ExpressionNr&   r   r   r   r   r'   )   s   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   s   | ]}t |ƒV  qd S r   ©Ústr©Ú.0r*   r   r   r   Ú	<genexpr>7   s     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                   @   s   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   r3   ÚgidZgunicodeZgtyper7   r   r   r   r   r   ;   s    zGlyphDefinition.__init__c                 C   s¨   d| j › d| j› �}| jd k	rht| jƒdkrTd dd„ | jD ƒ¡}|d|› d�7 }n|d	| jd
 › �7 }| jd k	r‚|d| j› �7 }| jd k	rœ|d| j› �7 }|d7 }|S )NzDEF_GLYPH "z" ID é   ú,c                 s   s   | ]}d |d›�V  qdS )zU+Z04XNr   )r/   Úur   r   r   r0   G   s     z*GlyphDefinition.__str__.<locals>.<genexpr>z UNICODEVALUES "ú"z	 UNICODE r   z TYPE z COMPONENTS z
 END_GLYPH)r3   r4   r5   Úlenr1   r6   r7   )r   r   Zunicodesr   r   r   r   C   s    


zGlyphDefinition.__str__)N©r   r   r   r   r   r   r   r   r   r2   :   s   
r2   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   r3   ÚenumÚglyphs_)r   r3   r@   r   r   r   r   r   T   s    zGroupDefinition.__init__c                 C   sd   |d k	r$| j |kr$td| j  | jƒ‚| jd kr^|d krDt| j hƒ}n| | j ¡ | j |¡| _| jS )NzGroup "%s" contains itself.)r3   r   r   rA   ÚsetÚaddr@   ÚglyphSet)r   Úgroupsr   r   r   rD   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)r@   r-   r3   ©r   r@   r   r   r   r   g   s    zGroupDefinition.__str__)N)N)r   r   r   r   rD   r   r   r   r   r   r?   S   s   

r?   c                   @   s*   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   s   t  | |¡ || _d S r   )r'   r   Úglyph)r   rJ   r   r   r   r   r   o   s    zGlyphName.__init__c                 C   s   | j fS r   ©rJ   r#   r   r   r   rD   s   s    zGlyphName.glyphSetc                 C   s   d| j › d�S )Nz GLYPH "r<   rK   r#   r   r   r   r   v   s    zGlyphName.__str__)N©r   r   r   Ú__doc__r   rD   r   r   r   r   r   rI   l   s   
rI   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   s   t  | |¡ || _d S r   )r'   r   r@   )r   r@   r   r   r   r   r   }   s    zEnum.__init__c                 c   s   |   ¡ D ]
}|V  qd S r   )rD   )r   Úer   r   r   Ú__iter__�   s    zEnum.__iter__c                 C   sF   g }| j D ]2}t|ttfƒr.| | |¡¡ q
| | ¡ ¡ q
t|ƒS r   )r@   Ú
isinstanceÚ	GroupNamerN   ÚextendrD   Útuple)r   rE   ZglyphsÚelementr   r   r   rD   …   s    
zEnum.glyphSetc                 C   s"   d  dd„ | jD ƒ¡}d|› d�S )NrF   c                 s   s   | ]}t |ƒV  qd S r   r,   )r/   rO   r   r   r   r0   �   s     zEnum.__str__.<locals>.<genexpr>z ENUMz	 END_ENUM)r1   r@   rH   r   r   r   r   Ž   s    zEnum.__str__)N)N)r   r   r   rM   r   rP   rD   r   r   r   r   r   rN   z   s
   

	rN   c                   @   s,   e Zd ZdZd	dd„Zd
dd„Zdd„ ZdS )rR   zA glyph groupNc                 C   s   t  | |¡ || _|| _d S r   )r'   r   ÚgroupÚparser_)r   rV   Úparserr   r   r   r   r   –   s    zGroupName.__init__c                 C   s>   | j  | j¡}|d k	r(| |¡| _| jS td| j | jƒ‚d S )Nz!Group "%s" is used but undefined.)rW   Zresolve_grouprV   rD   rA   r   r   )r   rE   rV   r   r   r   rD   ›   s     ÿzGroupName.glyphSetc                 C   s   d| j › d�S )Nz GROUP "r<   )rV   r#   r   r   r   r   ¥   s    zGroupName.__str__)N)NrL   r   r   r   r   rR   “   s   


rR   c                   @   s*   e Zd ZdZd	dd„Zdd„ Zdd„ ZdS )
ÚRangezA glyph rangeNc                 C   s"   t  | |¡ || _|| _|| _d S r   )r'   r   ÚstartÚendrX   )r   rZ   r[   rX   r   r   r   r   r   ¬   s    zRange.__init__c                 C   s   t | j | j| j¡ƒS r   )rT   rX   Zglyph_rangerZ   r[   r#   r   r   r   rD   ²   s    zRange.glyphSetc                 C   s   d| j › d| j› d�S )Nz RANGE "z" TO "r<   )rZ   r[   r#   r   r   r   r   µ   s    zRange.__str__)NrL   r   r   r   r   rY   ©   s   
rY   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚScriptDefinitionNc                 C   s"   t  | |¡ || _|| _|| _d S r   )r%   r   r3   ÚtagÚlangs)r   r3   r]   r^   r   r   r   r   r   º   s    zScriptDefinition.__init__c                 C   sT   d}| j d k	r |d| j › d�7 }|d| j› d�7 }| jD ]}||› 7 }q8|d7 }|S )NZ
DEF_SCRIPTú NAME "r<   ú TAG "ú"

Z
END_SCRIPT)r3   r]   r^   )r   r   Úlangr   r   r   r   À   s    

zScriptDefinition.__str__)Nr>   r   r   r   r   r\   ¹   s   
r\   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚLangSysDefinitionNc                 C   s"   t  | |¡ || _|| _|| _d S r   )r%   r   r3   r]   Úfeatures)r   r3   r]   rd   r   r   r   r   r   Ì   s    zLangSysDefinition.__init__c                 C   sT   d}| j d k	r |d| j › d�7 }|d| j› d�7 }| jD ]}||› 7 }q8|d7 }|S )NZDEF_LANGSYSr_   r<   r`   ra   zEND_LANGSYS
)r3   r]   rd   )r   r   Úfeaturer   r   r   r   Ò   s    

zLangSysDefinition.__str__)Nr>   r   r   r   r   rc   Ë   s   
rc   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚFeatureDefinitionNc                 C   s"   t  | |¡ || _|| _|| _d S r   )r%   r   r3   r]   Úlookups)r   r3   r]   rg   r   r   r   r   r   Þ   s    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 "rG   r   c                 s   s   | ]}d |› d�V  qdS )zLOOKUP "r<   Nr   )r/   Úlr   r   r   r0   æ   s     z,FeatureDefinition.__str__.<locals>.<genexpr>r+   zEND_FEATURE
)r3   r]   r1   rg   )r   r   r   r   r   r   ä   s    "zFeatureDefinition.__str__)Nr>   r   r   r   r   rf   Ý   s   
rf   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚLookupDefinitionNc                 C   sL   t  | |¡ || _|| _|| _|| _|| _|| _|| _|| _	|	| _
|
| _d S r   )r%   r   r3   Úprocess_baseÚprocess_marksÚmark_glyph_setÚ	directionÚreversalÚcommentsÚcontextÚsubÚpos)r   r3   rj   rk   rl   rm   rn   ro   rp   rq   rr   r   r   r   r   r   ì   s    zLookupDefinition.__init__c                 C   s2  d| j › d�}|d| jrdpd› �7 }| jrx|d7 }| jrN|d| j› d�7 }q€t| jtƒrn|d| j› d�7 }q€|d7 }n|d	7 }| jd k	rš|d
| j› �7 }| jr¨|d7 }| jd k	rÐ| 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 "r<   r   ZPROCESS_BASEZ	SKIP_BASEz PROCESS_MARKS zMARK_GLYPH_SET "ZALLz SKIP_MARKSz DIRECTION z	 REVERSALr+   z\nz
COMMENTS "c                 s   s   | ]}t |ƒV  qd S r   r,   ©r/   Úcr   r   r   r0     s     z+LookupDefinition.__str__.<locals>.<genexpr>z
IN_CONTEXT
END_CONTEXT)r3   rj   rk   rl   rQ   r-   rm   rn   ro   Úreplacerp   r1   rq   rr   )r   r   ro   r   r   r   r     s2    


 zLookupDefinition.__str__)Nr>   r   r   r   r   ri   ë   s    ô
ri   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚSubstitutionDefinitionNc                 C   s   t  | |¡ || _d S r   )r%   r   Úmapping)r   rw   r   r   r   r   r   &  s    zSubstitutionDefinition.__init__c                 C   sb   d}| j  ¡ D ]F\}}d dd„ |D ƒ¡}d dd„ |D ƒ¡}|d|› d|› d�7 }q|d	7 }|S )
NzAS_SUBSTITUTION
rF   c                 s   s   | ]}t |ƒV  qd S r   r,   r.   r   r   r   r0   -  s     z1SubstitutionDefinition.__str__.<locals>.<genexpr>c                 s   s   | ]}t |ƒV  qd S r   r,   )r/   Údr   r   r   r0   .  s     ZSUBz
WITHz	
END_SUB
ZEND_SUBSTITUTION)rw   r   r1   )r   r   ÚsrcÚdstr   r   r   r   *  s    zSubstitutionDefinition.__str__)Nr>   r   r   r   r   rv   %  s   
rv   c                   @   s   e Zd ZdS )ÚSubstitutionSingleDefinitionNr&   r   r   r   r   r{   4  s   r{   c                   @   s   e Zd ZdS )ÚSubstitutionMultipleDefinitionNr&   r   r   r   r   r|   8  s   r|   c                   @   s   e Zd ZdS )ÚSubstitutionLigatureDefinitionNr&   r   r   r   r   r}   <  s   r}   c                   @   s   e Zd ZdS )Ú+SubstitutionReverseChainingSingleDefinitionNr&   r   r   r   r   r~   @  s   r~   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚPositionAttachDefinitionNc                 C   s   t  | |¡ || _|| _d S r   )r%   r   ÚcoverageÚcoverage_to)r   r€   r�   r   r   r   r   r   E  s    z!PositionAttachDefinition.__init__c                 C   sf   d  dd„ | jD ƒ¡}d|› d�}| jD ]0\}}d  dd„ |D ƒ¡}||› d|› d�7 }q(|d	7 }|S )
NrF   c                 s   s   | ]}t |ƒV  qd S r   r,   rs   r   r   r   r0   K  s     z3PositionAttachDefinition.__str__.<locals>.<genexpr>zAS_POSITION
ATTACHz
TOc                 s   s   | ]}t |ƒV  qd S r   r,   rs   r   r   r   r0   N  s     z AT ANCHOR "r<   ú
END_ATTACH
END_POSITION)r1   r€   r�   )r   r€   r   Úanchorr   r   r   r   J  s    z PositionAttachDefinition.__str__)Nr>   r   r   r   r   r   D  s   
r   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚPositionAttachCursiveDefinitionNc                 C   s   t  | |¡ || _|| _d S r   )r%   r   Úcoverages_exitÚcoverages_enter)r   r…   r†   r   r   r   r   r   U  s    z(PositionAttachCursiveDefinition.__init__c                 C   sl   d}| j D ]&}d dd„ |D ƒ¡}|d|› �7 }q
| jD ]&}d dd„ |D ƒ¡}|d|› �7 }q8|d7 }|S )	NzAS_POSITION
ATTACH_CURSIVErF   c                 s   s   | ]}t |ƒV  qd S r   r,   rs   r   r   r   r0   ]  s     z:PositionAttachCursiveDefinition.__str__.<locals>.<genexpr>z
EXIT c                 s   s   | ]}t |ƒV  qd S r   r,   rs   r   r   r   r0   `  s     z
ENTER r‚   )r…   r1   r†   ©r   r   r€   r   r   r   r   Z  s    

z'PositionAttachCursiveDefinition.__str__)Nr>   r   r   r   r   r„   T  s   
r„   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚPositionAdjustPairDefinitionNc                 C   s"   t  | |¡ || _|| _|| _d S r   )r%   r   Úcoverages_1Úcoverages_2Úadjust_pair)r   r‰   rŠ   r‹   r   r   r   r   r   g  s    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 ]0\\}}\}}|d|› d|› d	|› |› d�7 }qz|d
7 }|S )NzAS_POSITION
ADJUST_PAIR
r   c                 s   s   | ]}t |ƒV  qd S r   r,   rs   r   r   r   r0   p  s     z7PositionAdjustPairDefinition.__str__.<locals>.<genexpr>z FIRST r+   c                 s   s   | ]}t |ƒV  qd S r   r,   rs   r   r   r   r0   t  s     z SECOND ú BYú
END_ADJUST
END_POSITION)r‰   r1   rŠ   r‹   r   )r   r   r€   Zid_1Zid_2Zpos_1Zpos_2r   r   r   r   m  s    

"z$PositionAdjustPairDefinition.__str__)Nr>   r   r   r   r   rˆ   f  s   
rˆ   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚPositionAdjustSingleDefinitionNc                 C   s   t  | |¡ || _d S r   )r%   r   Úadjust_single)r   r�   r   r   r   r   r   ~  s    z'PositionAdjustSingleDefinition.__init__c                 C   sF   d}| j D ].\}}d dd„ |D ƒ¡}||› d|› �7 }q
|d7 }|S )NzAS_POSITION
ADJUST_SINGLErF   c                 s   s   | ]}t |ƒV  qd S r   r,   rs   r   r   r   r0   …  s     z9PositionAdjustSingleDefinition.__str__.<locals>.<genexpr>rŒ   r�   )r�   r1   )r   r   r€   rr   r   r   r   r   ‚  s    z&PositionAdjustSingleDefinition.__str__)Nr>   r   r   r   r   rŽ   }  s   
rŽ   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚContextDefinitionNc                 C   s:   t  | |¡ || _|d k	r|ng | _|d k	r0|n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+   rF   c                 s   s   | ]}t |ƒV  qd S r   r,   rs   r   r   r   r0   •  s     z,ContextDefinition.__str__.<locals>.<genexpr>z LEFTc                 s   s   | ]}t |ƒV  qd S r   r,   rs   r   r   r   r0   ˜  s     z RIGHTZEND_CONTEXT)r‘   r’   r1   r“   r‡   r   r   r   r   ’  s    


zContextDefinition.__str__)NNNr>   r   r   r   r   r�   ‹  s   
r�   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚAnchorDefinitionNc                 C   s4   t  | |¡ || _|| _|| _|| _|| _|| _d S r   )r%   r   r3   r8   Ú
glyph_nameÚ	componentÚlockedrr   )r   r3   r8   r•   r–   r—   rr   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 LOCKEDrF   zDEF_ANCHOR "z" ON z GLYPH z COMPONENT r	   z END_ANCHOR)r—   r3   r8   r•   r–   rr   )r   r—   r   r   r   r   ¨  s    0ÿzAnchorDefinition.__str__)Nr>   r   r   r   r   r”   ž  s   
	r”   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚSettingDefinitionNc                 C   s   t  | |¡ || _|| _d S r   )r%   r   r3   r   )r   r3   r   r   r   r   r   r   µ  s    zSettingDefinition.__init__c                 C   sZ   | j dkr| j› S t| j ttfƒrHd dd„ | j D ƒ¡}| j› d|› �S | j› d| j › �S )NTr   c                 s   s   | ]}t |ƒV  qd S r   r,   )r/   Úvr   r   r   r0   ¾  s     z,SettingDefinition.__str__.<locals>.<genexpr>)r   r3   rQ   rT   Úlistr1   )r   r   r   r   r   r   º  s    
zSettingDefinition.__str__)Nr>   r   r   r   r   r˜   ´  s   
r˜   N) ZfontTools.voltLib.errorr   Útypingr   r   Úobjectr   r%   r'   r(   r2   r?   rI   rN   rR   rY   r\   rc   rf   ri   rv   r{   r|   r}   r~   r   r„   rˆ   rŽ   r�   r”   r˜   r   r   r   r   Ú<module>   s8   :