a
    w=icw3                     @   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 u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   f/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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       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   r4   gidZgunicodegtyper8   r   r   r   r   r   ;   s    zGlyphDefinition.__init__c                 C   s   d| j  d| j }| jd urht| jdkrTddd | jD }|d| d7 }n|d	| jd
  7 }| jd ur|d| j 7 }| jd u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   r1   z*GlyphDefinition.__str__.<locals>.<genexpr>z UNICODEVALUES ""z	 UNICODE r   z TYPE z COMPONENTS z
 END_GLYPH)r4   r5   r6   lenr2   r7   r8   )r   r   Zunicodesr   r   r   r   C   s    


zGlyphDefinition.__str__)Nr   r   r   r   r   r   r   r   r   r3   :   s   
r3   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   r4   enumglyphs_)r   r4   rB   r   r   r   r   r   T   s    zGroupDefinition.__init__c                 C   sd   |d ur$| j |v r$td| j  | j| jd u r^|d u rDt| j h}n|| j  | j|| _| jS )NzGroup "%s" contains itself.)r4   r   r   rC   setaddrB   glyphSet)r   groupsr   r   r   rF   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)rB   r-   r4   r   rB   r   r   r   r   g   s    zGroupDefinition.__str__)N)N)r   r   r   r   rF   r   r   r   r   r   rA   S   s   

rA   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   rL   r   r   r   r   r   n   s    zGlyphName.__init__c                 C   s   | j fS r   rL   r#   r   r   r   rF   r   s    zGlyphName.glyphSetc                 C   s   d| j  dS )Nz GLYPH "r>   rM   r#   r   r   r   r   u   s    zGlyphName.__str__)Nr   r   r   __doc__r   rF   r   r   r   r   r   rK   l   s   
rK   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   rB   )r   rB   r   r   r   r   r   {   s    zEnum.__init__c                 c   s   |   D ]
}|V  qd S r   )rF   )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   )rB   
isinstance	GroupNamerP   extendrF   tuple)r   rG   Zglyphselementr   r   r   rF      s    
zEnum.glyphSetc                 C   s"   d dd | jD }d| dS )NrH   c                 s   s   | ]}t |V  qd S r   r,   )r/   rQ   r   r   r   r0      r1   zEnum.__str__.<locals>.<genexpr>z ENUMz	 END_ENUM)r2   rB   rJ   r   r   r   r      s    zEnum.__str__)N)N)r   r   r   rO   r   rR   rF   r   r   r   r   r   rP   y   s
   

	rP   c                   @   s,   e Zd ZdZd	ddZd
ddZdd ZdS )rT   zA glyph groupNc                 C   s   t | | || _|| _d S r   )r'   r   groupparser_)r   rX   parserr   r   r   r   r      s    zGroupName.__init__c                 C   s>   | j | j}|d ur(||| _| jS td| j | jd S )Nz!Group "%s" is used but undefined.)rY   Zresolve_grouprX   rF   rC   r   r   )r   rG   rX   r   r   r   rF      s    zGroupName.glyphSetc                 C   s   d| j  dS )Nz GROUP "r>   )rX   r#   r   r   r   r      s    zGroupName.__str__)N)NrN   r   r   r   r   rT      s   


rT   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endrZ   )r   r\   r]   rZ   r   r   r   r   r      s    zRange.__init__c                 C   s   t | j| j| jS r   )rV   rZ   Zglyph_ranger\   r]   r#   r   r   r   rF      s    zRange.glyphSetc                 C   s   d| j  d| j dS )Nz RANGE "z" TO "r>   )r\   r]   r#   r   r   r   r      s    zRange.__str__)NrN   r   r   r   r   r[      s   
r[   c                   @   s   e Zd ZdddZdd ZdS )ScriptDefinitionNc                 C   s"   t | | || _|| _|| _d S r   )r%   r   r4   taglangs)r   r4   r_   r`   r   r   r   r   r      s    zScriptDefinition.__init__c                 C   sT   d}| j d u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)r4   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   r4   r_   features)r   r4   r_   rf   r   r   r   r   r      s    zLangSysDefinition.__init__c                 C   sT   d}| j d ur |d| j  d7 }|d| j d7 }| jD ]}|| 7 }q8|d7 }|S )NZDEF_LANGSYSra   r>   rb   rc   zEND_LANGSYS
)r4   r_   rf   )r   r   featurer   r   r   r      s    

zLangSysDefinition.__str__)Nr@   r   r   r   r   re      s   
re   c                   @   s   e Zd ZdddZdd ZdS )FeatureDefinitionNc                 C   s"   t | | || _|| _|| _d S r   )r%   r   r4   r_   lookups)r   r4   r_   ri   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 "rI   r   c                 s   s   | ]}d | dV  qdS )zLOOKUP "r>   Nr   )r/   lr   r   r   r0      r1   z,FeatureDefinition.__str__.<locals>.<genexpr>r+   zEND_FEATURE
)r4   r_   r2   ri   )r   r   r   r   r   r      s    "zFeatureDefinition.__str__)Nr@   r   r   r   r   rh      s   
rh   c                   @   s   e Zd ZdddZdd ZdS )LookupDefinitionNc                 C   sL   t | | || _|| _|| _|| _|| _|| _|| _|| _	|	| _
|
| _d S r   )r%   r   r4   process_baseprocess_marksmark_glyph_set	directionreversalcommentscontextsubpos)r   r4   rl   rm   rn   ro   rp   rq   rr   rs   rt   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 }qt| jtrn|d| j d7 }q|d7 }n|d	7 }| jd ur|d
| j 7 }| jr|d7 }| jd u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 "ALLz SKIP_MARKSz DIRECTION z	 REVERSALr+   z\nz
COMMENTS "c                 s   s   | ]}t |V  qd S r   r,   r/   cr   r   r   r0     r1   z+LookupDefinition.__str__.<locals>.<genexpr>z
IN_CONTEXT
END_CONTEXT)r4   rl   rm   rn   rS   r-   ro   rp   rq   replacerr   r2   rs   rt   )r   r   rq   r   r   r   r      s2    


 zLookupDefinition.__str__)Nr@   r   r   r   r   rk      s    
rk   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   rz   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
rH   c                 s   s   | ]}t |V  qd S r   r,   r.   r   r   r   r0     r1   z1SubstitutionDefinition.__str__.<locals>.<genexpr>c                 s   s   | ]}t |V  qd S r   r,   )r/   dr   r   r   r0     r1   ZSUBz
WITHz	
END_SUB
ZEND_SUBSTITUTION)rz   r   r2   )r   r   srcdstr   r   r   r     s    zSubstitutionDefinition.__str__)Nr@   r   r   r   r   ry     s   
ry   c                   @   s   e Zd ZdS )SubstitutionSingleDefinitionNr&   r   r   r   r   r~   %  s   r~   c                   @   s   e Zd ZdS )SubstitutionMultipleDefinitionNr&   r   r   r   r   r   )  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   1  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   6  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 )
NrH   c                 s   s   | ]}t |V  qd S r   r,   rv   r   r   r   r0   <  r1   z3PositionAttachDefinition.__str__.<locals>.<genexpr>zAS_POSITION
ATTACHz
TOc                 s   s   | ]}t |V  qd S r   r,   rv   r   r   r   r0   ?  r1   z AT ANCHOR "r>   
END_ATTACH
END_POSITION)r2   r   r   )r   r   r   anchorr   r   r   r   ;  s    z PositionAttachDefinition.__str__)Nr@   r   r   r   r   r   5  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   F  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_CURSIVErH   c                 s   s   | ]}t |V  qd S r   r,   rv   r   r   r   r0   N  r1   z:PositionAttachCursiveDefinition.__str__.<locals>.<genexpr>z
EXIT c                 s   s   | ]}t |V  qd S r   r,   rv   r   r   r   r0   Q  r1   z
ENTER r   )r   r2   r   r   r   r   r   r   r   r   K  s    

z'PositionAttachCursiveDefinition.__str__)Nr@   r   r   r   r   r   E  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   X  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,   rv   r   r   r   r0   a  r1   z7PositionAdjustPairDefinition.__str__.<locals>.<genexpr>z FIRST r+   c                 s   s   | ]}t |V  qd S r   r,   rv   r   r   r   r0   e  r1   z SECOND  BY
END_ADJUST
END_POSITION)r   r2   r   r   r   )r   r   r   Zid_1Zid_2Zpos_1Zpos_2r   r   r   r   ^  s    

"z$PositionAdjustPairDefinition.__str__)Nr@   r   r   r   r   r   W  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   o  s    z'PositionAdjustSingleDefinition.__init__c                 C   sF   d}| j D ].\}}ddd |D }|| d| 7 }q
|d7 }|S )NzAS_POSITION
ADJUST_SINGLErH   c                 s   s   | ]}t |V  qd S r   r,   rv   r   r   r   r0   v  r1   z9PositionAdjustSingleDefinition.__str__.<locals>.<genexpr>r   r   )r   r2   )r   r   r   rt   r   r   r   r   s  s    z&PositionAdjustSingleDefinition.__str__)Nr@   r   r   r   r   r   n  s   
r   c                   @   s   e Zd ZdddZdd ZdS )ContextDefinitionNc                 C   s:   t | | || _|d ur|ng | _|d u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+   rH   c                 s   s   | ]}t |V  qd S r   r,   rv   r   r   r   r0     r1   z,ContextDefinition.__str__.<locals>.<genexpr>z LEFTc                 s   s   | ]}t |V  qd S r   r,   rv   r   r   r   r0     r1   z RIGHTZEND_CONTEXT)r   r   r2   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   r4   r9   
glyph_name	componentlockedrt   )r   r4   r9   r   r   r   rt   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 LOCKEDrH   zDEF_ANCHOR "z" ON z GLYPH z COMPONENT r	   z END_ANCHOR)r   r4   r9   r   r   rt   )r   r   r   r   r   r     s    
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   r4   r   )r   r4   r   r   r   r   r   r     s    zSettingDefinition.__init__c                 C   sZ   | j du 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     r1   z,SettingDefinition.__str__.<locals>.<genexpr>)r   r4   rS   rV   listr2   )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(   r3   rA   rK   rP   rT   r[   r^   re   rh   rk   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s8   /