
    jke3                     n   d dl mZ d dlmZ  G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z	 G d de      Z
 G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(e      Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z G d1 d2e      Z G d3 d4e      Z G d5 d6e      Z G d7 d8e      Zy9):    )VoltLibError)
NamedTuplec                   P    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   d Zy)	Posadvdxdyadv_adjust_bydx_adjust_bydy_adjust_byc                     d}dD ]]  }t        | |      }||d|j                          d| z  }t        | | di       }|j                         D ]  \  }}|d| d| z  } _ |dz  }|S )Nz POS)r   r   r	    
_adjust_byz ADJUST_BY  AT z END_POS)getattrupperitems)selfresattrvalue	adjust_bysize
adjustments          7/usr/lib/python3/dist-packages/fontTools/voltLib/ast.py__str__zPos.__str__   s    ' 	@DD$'E 4::<.%11#DTF**=rB	(1(9 @$D*[D??C@	@ 	z
    N)__name__
__module____qualname__int__annotations__dictr    r   r   r   r      s(    	HGG
r   r   c                        e Zd ZddZd Zd Zy)ElementNc                     || _         y Nlocation)r   r*   s     r   __init__zElement.__init__   s	     r   c                      y r(   r$   )r   builders     r   buildzElement.build   s    r   c                     t         r(   )NotImplementedErrorr   s    r   r   zElement.__str__!   s    !!r   r(   r   r   r    r+   r.   r   r$   r   r   r&   r&      s    !"r   r&   c                       e Zd Zy)	StatementNr   r   r    r$   r   r   r4   r4   %       r   r4   c                       e Zd Zy)
ExpressionNr5   r$   r   r   r8   r8   )   r6   r   r8   c                       e Zd Zd Zd Zd Zy)VoltFilec                 @    t         j                  | d        g | _        y )Nr)   )r4   r+   
statementsr1   s    r   r+   zVoltFile.__init__.   s    4$/r   c                 H    | j                   D ]  }|j                  |        y r(   )r<   r.   )r   r-   ss      r   r.   zVoltFile.build2   s!     	AGGG	r   c                 R    ddj                  d | j                  D              z   dz   S )N
c              3   2   K   | ]  }t        |        y wr(   str.0r>   s     r   	<genexpr>z#VoltFile.__str__.<locals>.<genexpr>7   s     @1A@   z END
)joinr<   r1   s    r   r   zVoltFile.__str__6   s%    dii@@@@8KKr   Nr2   r$   r   r   r:   r:   -   s    Lr   r:   c                       e Zd ZddZd Zy)GlyphDefinitionNc                 v    t         j                  | |       || _        || _        || _        || _        || _        y r(   )r4   r+   nameidunicodetype
components)r   rL   gidgunicodegtyperP   r*   s          r   r+   zGlyphDefinition.__init__;   s5    4*		$r   c                    d| j                    d| j                   }| j                  Yt        | j                        dkD  r,dj	                  d | j                  D              }|d| dz  }n|d| j                  d	    z  }| j
                  |d
| j
                   z  }| j                  |d| j                   z  }|dz  }|S )NzDEF_GLYPH "z" ID    ,c              3   (   K   | ]
  }d |d  yw)zU+04XNr$   )rE   us     r   rF   z*GlyphDefinition.__str__.<locals>.<genexpr>G   s     #GQb3L#G   z UNICODEVALUES ""z	 UNICODE r   z TYPE z COMPONENTS z
 END_GLYPH)rL   rM   rN   lenrH   rO   rP   )r   r   unicodess      r   r   zGlyphDefinition.__str__C   s    DII;eDGG95<<#4<< 1$88#G$,,#GG)(1554<<?"34499 VDII;''C??&\$//!233C|
r   r(   r   r   r    r+   r   r$   r   r   rJ   rJ   :   s    %r   rJ   c                   "    e Zd ZddZddZd Zy)GroupDefinitionNc                 Z    t         j                  | |       || _        || _        d | _        y r(   )r4   r+   rL   enumglyphs_)r   rL   rb   r*   s       r   r+   zGroupDefinition.__init__T   s'    4*		r   c                 @   |1| j                   |v r#t        d| j                   z  | j                        | j                  T|t	        | j                   h      }n|j                  | j                          | j                  j                  |      | _        | j                  S )NzGroup "%s" contains itself.)rL   r   r*   rc   setaddrb   glyphSet)r   groupss     r   rg   zGroupDefinition.glyphSetZ   s    $))v"5-;T]]  <<~dii[)

499%99--f5DL||r   c                 v    | j                   xr t        | j                         xs d}d| j                   d| dS )N zDEF_GROUP ""
z

END_GROUP)rb   rC   rL   r   rb   s     r   r   zGroupDefinition.__str__g   s6    yy+S^1rTYYKs4&<<r   r(   )r   r   r    r+   rg   r   r$   r   r   r`   r`   S   s    =r   r`   c                   $    e Zd ZdZddZd Zd Zy)	GlyphNamez%A single glyph name, such as cedilla.Nc                 >    t         j                  | |       || _        y r(   )r8   r+   glyph)r   rp   r*   s      r   r+   zGlyphName.__init__o   s    D(+
r   c                     | j                   fS r(   rp   r1   s    r   rg   zGlyphName.glyphSets   s    

}r   c                 "    d| j                    dS )Nz GLYPH "r[   rr   r1   s    r   r   zGlyphName.__str__v       $**Q''r   r(   r   r   r    __doc__r+   rg   r   r$   r   r   rn   rn   l   s    /(r   rn   c                   ,    e Zd ZdZddZd ZddZd Zy)EnumzAn enumNc                 >    t         j                  | |       || _        y r(   )r8   r+   rb   )r   rb   r*   s      r   r+   zEnum.__init__}   s    D(+	r   c              #   >   K   | j                         D ]  }|  y wr(   )rg   )r   es     r   __iter__zEnum.__iter__   s       	AG	s   c                     g }| j                   D ]X  }t        |t        t        f      r!|j	                  |j                  |             :|j	                  |j                                Z t        |      S r(   )rb   
isinstance	GroupNamerx   extendrg   tuple)r   rh   glyphselements       r   rg   zEnum.glyphSet   sa    yy 	2G'It#45g..v67g..01		2
 V}r   c                 R    dj                  d | j                  D              }d| dS )Nrj   c              3   2   K   | ]  }t        |        y wr(   rB   )rE   r{   s     r   rF   zEnum.__str__.<locals>.<genexpr>   s     1!s1v1rG   z ENUMz	 END_ENUM)rH   rb   rl   s     r   r   zEnum.__str__   s)    ww1tyy11tfI&&r   r(   )r   r   r    rv   r+   r|   rg   r   r$   r   r   rx   rx   z   s    'r   rx   c                   &    e Zd ZdZddZddZd Zy)r   zA glyph groupNc                 L    t         j                  | |       || _        || _        y r(   )r8   r+   groupparser_)r   r   parserr*   s       r   r+   zGroupName.__init__   s     D(+
r   c                     | j                   j                  | j                        }|"|j                  |      | _        | j                  S t        d| j                  z  | j                        )Nz!Group "%s" is used but undefined.)r   resolve_groupr   rg   rc   r   r*   )r   rh   r   s      r   rg   zGroupName.glyphSet   sY    **4::6 >>&1DL<<3tzzBDMM r   c                 "    d| j                    dS )Nz GROUP "r[   )r   r1   s    r   r   zGroupName.__str__   rt   r   r(   ru   r$   r   r   r   r      s    
(r   r   c                   $    e Zd ZdZddZd Zd Zy)RangezA glyph rangeNc                 Z    t         j                  | |       || _        || _        || _        y r(   )r8   r+   startendr   )r   r   r   r   r*   s        r   r+   zRange.__init__   s'    D(+
r   c                 t    t        | j                  j                  | j                  | j                              S r(   )r   r   glyph_ranger   r   r1   s    r   rg   zRange.glyphSet   s&    T[[,,TZZBCCr   c                 <    d| j                    d| j                   dS )Nz RANGE "z" TO "r[   )r   r   r1   s    r   r   zRange.__str__   s    $**VDHH:Q77r   r(   ru   r$   r   r   r   r      s    D8r   r   c                       e Zd ZddZd Zy)ScriptDefinitionNc                 Z    t         j                  | |       || _        || _        || _        y r(   )r4   r+   rL   taglangs)r   rL   r   r   r*   s        r   r+   zScriptDefinition.__init__   s'    4*	
r   c                     d}| j                   |d| j                    dz  }|d| j                   dz  }| j                  D ]  }|| z  }
 |dz  }|S )N
DEF_SCRIPT NAME "r[    TAG ""


END_SCRIPT)rL   r   r   )r   r   langs      r   r   zScriptDefinition.__str__   sm    99 WTYYKq))Cz''JJ 	DdVC	|
r   r(   r^   r$   r   r   r   r      s    r   r   c                       e Zd ZddZd Zy)LangSysDefinitionNc                 Z    t         j                  | |       || _        || _        || _        y r(   )r4   r+   rL   r   features)r   rL   r   r   r*   s        r   r+   zLangSysDefinition.__init__   s'    4*	 r   c                     d}| j                   |d| j                    dz  }|d| j                   dz  }| j                  D ]  }|| z  }
 |dz  }|S )NDEF_LANGSYSr   r[   r   r   zEND_LANGSYS
)rL   r   r   )r   r   features      r   r   zLangSysDefinition.__str__   sm    99 WTYYKq))Cz''}} 	 GgYC	 
r   r(   r^   r$   r   r   r   r      s    !r   r   c                       e Zd ZddZd Zy)FeatureDefinitionNc                 Z    t         j                  | |       || _        || _        || _        y r(   )r4   r+   rL   r   lookups)r   rL   r   r   r*   s        r   r+   zFeatureDefinition.__init__   s'    4*	r   c                     d| j                    d| j                   d}|ddj                  d | j                  D              z   dz   z  }|dz  }|S )NzDEF_FEATURE NAME "z" TAG "rk   r   c              3   (   K   | ]
  }d | d  yw)zLOOKUP "r[   Nr$   )rE   ls     r   rF   z,FeatureDefinition.__str__.<locals>.<genexpr>   s     D!1oDrZ   r@   zEND_FEATURE
)rL   r   rH   r   )r   r   s     r   r   zFeatureDefinition.__str__   sT    "499+WTXXJcBsSXXDt||DDDtKK
r   r(   r^   r$   r   r   r   r      s    r   r   c                       e Zd Z	 ddZd Zy)LookupDefinitionNc                     t         j                  | |       || _        || _        || _        || _        || _        || _        || _        || _	        |	| _
        |
| _        y r(   )r4   r+   rL   process_baseprocess_marksmark_glyph_set	directionreversalcommentscontextsubpos)r   rL   r   r   r   r   r   r   r   r   r   r*   s               r   r+   zLookupDefinition.__init__   s]     	4*	(*,"  r   c                    d| j                    d}|d| j                  xr dxs d z  }| j                  rY|dz  }| j                  r|d| j                   dz  }n9t	        | j                  t
              r|d| j                   dz  }n|dz  }n|d	z  }| j                  |d
| j                   z  }| j                  r|dz  }| j                  %| j                  j                  dd      }|d| dz  }| j                  r)|ddj                  d | j                  D              z   z  }n|dz  }| j                  r|d| j                   z  }| j                  r|d| j                   z  }|S )NzDEF_LOOKUP "r[   r   PROCESS_BASE	SKIP_BASEz PROCESS_MARKS zMARK_GLYPH_SET "ALLz SKIP_MARKSz DIRECTION z	 REVERSALr@   z\nz
COMMENTS "c              3   2   K   | ]  }t        |        y wr(   rB   rE   cs     r   rF   z+LookupDefinition.__str__.<locals>.<genexpr>  s     #AqCF#ArG   z
IN_CONTEXT
END_CONTEXT)rL   r   r   r   r~   rC   r   r   r   replacer   rH   r   r   )r   r   r   s      r   r   zLookupDefinition.__str__  s~   TYYKq)4$$7F;GHH$$C"")$*=*=)>a@@D..44--.a00u= C>>%[ 011C==;C==$}},,T59H\(1--C<<4$))#ADLL#AAAAC..C88Rz?"C88Rz?"C
r   r(   r^   r$   r   r   r   r      s     4r   r   c                       e Zd ZddZd Zy)SubstitutionDefinitionNc                 >    t         j                  | |       || _        y r(   )r4   r+   mapping)r   r   r*   s      r   r+   zSubstitutionDefinition.__init__&  s    4*r   c                     d}| j                   j                         D ]A  \  }}dj                  d |D              }dj                  d |D              }|d| d| dz  }C |dz  }|S )	NzAS_SUBSTITUTION
rj   c              3   2   K   | ]  }t        |        y wr(   rB   rD   s     r   rF   z1SubstitutionDefinition.__str__.<locals>.<genexpr>-       .Q#a&.rG   c              3   2   K   | ]  }t        |        y wr(   rB   )rE   ds     r   rF   z1SubstitutionDefinition.__str__.<locals>.<genexpr>.  r   rG   SUBz
WITHz	
END_SUB
END_SUBSTITUTION)r   r   rH   )r   r   srcdsts       r   r   zSubstitutionDefinition.__str__*  sz    !**, 	5HC''.#..C''.#..CSVC544C	5 	!!
r   r(   r^   r$   r   r   r   r   %  s    r   r   c                       e Zd Zy)SubstitutionSingleDefinitionNr5   r$   r   r   r   r   4  r6   r   r   c                       e Zd Zy)SubstitutionMultipleDefinitionNr5   r$   r   r   r   r   8  r6   r   r   c                       e Zd Zy)SubstitutionLigatureDefinitionNr5   r$   r   r   r   r   <  r6   r   r   c                       e Zd Zy)+SubstitutionReverseChainingSingleDefinitionNr5   r$   r   r   r   r   @  r6   r   r   c                       e Zd ZddZd Zy)PositionAttachDefinitionNc                 L    t         j                  | |       || _        || _        y r(   )r4   r+   coveragecoverage_to)r   r   r   r*   s       r   r+   z!PositionAttachDefinition.__init__E  s!    4* &r   c                     dj                  d | j                  D              }d| d}| j                  D ](  \  }}dj                  d |D              }|| d| dz  }* |dz  }|S )	Nrj   c              3   2   K   | ]  }t        |        y wr(   rB   r   s     r   rF   z3PositionAttachDefinition.__str__.<locals>.<genexpr>K  s     9a3q69rG   zAS_POSITION
ATTACHz
TOc              3   2   K   | ]  }t        |        y wr(   rB   r   s     r   rF   z3PositionAttachDefinition.__str__.<locals>.<genexpr>N       8!s1v8rG   z AT ANCHOR "r[   
END_ATTACH
END_POSITION)rH   r   r   )r   r   r   anchors       r   r   z PositionAttachDefinition.__str__J  s    7794==99#H:T2 $ 0 0 	6Hfww8x88HhZ|F8155C	6 	++
r   r(   r^   r$   r   r   r   r   D  s    '
r   r   c                       e Zd ZddZd Zy)PositionAttachCursiveDefinitionNc                 L    t         j                  | |       || _        || _        y r(   )r4   r+   coverages_exitcoverages_enter)r   r   r   r*   s       r   r+   z(PositionAttachCursiveDefinition.__init__U  s"    4*,.r   c                     d}| j                   D ]"  }dj                  d |D              }|d| z  }$ | j                  D ]"  }dj                  d |D              }|d| z  }$ |dz  }|S )NzAS_POSITION
ATTACH_CURSIVErj   c              3   2   K   | ]  }t        |        y wr(   rB   r   s     r   rF   z:PositionAttachCursiveDefinition.__str__.<locals>.<genexpr>]  r   rG   z
EXIT c              3   2   K   | ]  }t        |        y wr(   rB   r   s     r   rF   z:PositionAttachCursiveDefinition.__str__.<locals>.<genexpr>`  r   rG   z
ENTER r   )r   rH   r   r   r   r   s      r   r   z'PositionAttachCursiveDefinition.__str__Z  s    +++ 	(Hww8x88HWXJ''C	( ,, 	)Hww8x88HXhZ((C	) 	++
r   r(   r^   r$   r   r   r   r   T  s    /
	r   r   c                       e Zd ZddZd Zy)PositionAdjustPairDefinitionNc                 Z    t         j                  | |       || _        || _        || _        y r(   )r4   r+   coverages_1coverages_2adjust_pair)r   r   r   r   r*   s        r   r+   z%PositionAdjustPairDefinition.__init__g  s*    4*&&&r   c           
      ^   d}| j                   D ]"  }dj                  d |D              }|d| z  }$ |dz  }| j                  D ]"  }dj                  d |D              }|d| z  }$ |dz  }| j                  j	                         D ]  \  \  }}\  }}|d| d| d| | dz  } |d	z  }|S )
NzAS_POSITION
ADJUST_PAIR
r   c              3   2   K   | ]  }t        |        y wr(   rB   r   s     r   rF   z7PositionAdjustPairDefinition.__str__.<locals>.<genexpr>p       91A9rG   z FIRST r@   c              3   2   K   | ]  }t        |        y wr(   rB   r   s     r   rF   z7PositionAdjustPairDefinition.__str__.<locals>.<genexpr>t  r   rG   z SECOND  BY
END_ADJUST
END_POSITION)r   rH   r   r   r   )r   r   r   id_1id_2pos_1pos_2s          r   r   z$PositionAdjustPairDefinition.__str__m  s    *(( 	(Hxx999HWXJ''C	( 	t(( 	)Hxx999HXhZ((C	) 	t,0,<,<,B,B,D 	8(LT4.5%QtfAdV3ugeWB77C	8++
r   r(   r^   r$   r   r   r   r   f  s    'r   r   c                       e Zd ZddZd Zy)PositionAdjustSingleDefinitionNc                 >    t         j                  | |       || _        y r(   )r4   r+   adjust_single)r   r   r*   s      r   r+   z'PositionAdjustSingleDefinition.__init__~  s    4**r   c                     d}| j                   D ]'  \  }}dj                  d |D              }|| d| z  }) |dz  }|S )NzAS_POSITION
ADJUST_SINGLErj   c              3   2   K   | ]  }t        |        y wr(   rB   r   s     r   rF   z9PositionAdjustSingleDefinition.__str__.<locals>.<genexpr>  r   rG   r   r   )r   rH   )r   r   r   r   s       r   r   z&PositionAdjustSingleDefinition.__str__  s[    *!// 	)MHcww8x88HhZs3%((C	) 	++
r   r(   r^   r$   r   r   r   r   }  s    +r   r   c                       e Zd ZddZd Zy)ContextDefinitionNc                 v    t         j                  | |       || _        ||ng | _        ||| _        y g | _        y r(   )r4   r+   ex_or_inleftright)r   r  r  r  r*   s        r   r+   zContextDefinition.__init__  s9    4*  ,D"	#/U
R
r   c                     | j                   dz   }| j                  D ]#  }dj                  d |D              }|d| dz  }% | j                  D ]#  }dj                  d |D              }|d| dz  }% |dz  }|S )Nr@   rj   c              3   2   K   | ]  }t        |        y wr(   rB   r   s     r   rF   z,ContextDefinition.__str__.<locals>.<genexpr>  r   rG   z LEFTc              3   2   K   | ]  }t        |        y wr(   rB   r   s     r   rF   z,ContextDefinition.__str__.<locals>.<genexpr>  r   rG   z RIGHTEND_CONTEXT)r  r  rH   r  r   s      r   r   zContextDefinition.__str__  s    mmd"		 	(Hww8x88HU8*B''C	( 

 	)Hww8x88HVH:R((C	) 	}
r   )NNNr^   r$   r   r   r  r    s    8	r   r  c                       e Zd ZddZd Zy)AnchorDefinitionNc                     t         j                  | |       || _        || _        || _        || _        || _        || _        y r(   )r4   r+   rL   rQ   
glyph_name	componentlockedr   )r   rL   rQ   r  r  r  r   r*   s           r   r+   zAnchorDefinition.__init__  s<    4*	$"r   c                     | j                   xr dxs d}d| j                   d| j                   d| j                   d| j                   | d| j
                   dS )	Nz LOCKEDrj   zDEF_ANCHOR "z" ON z GLYPH z COMPONENT r   z END_ANCHOR)r  rL   rQ   r  r  r   )r   r  s     r   r   zAnchorDefinition.__str__  sb    *0b499+ &88*doo&$..)h488*K)	
r   r(   r^   r$   r   r   r  r    s    	
r   r  c                       e Zd ZddZd Zy)SettingDefinitionNc                 L    t         j                  | |       || _        || _        y r(   )r4   r+   rL   r   )r   rL   r   r*   s       r   r+   zSettingDefinition.__init__  s     4*	
r   c                    | j                   du r| j                   S t        | j                   t        t        f      r3dj                  d | j                   D              }| j                   d| S | j                   d| j                    S )NTr   c              3   2   K   | ]  }t        |        y wr(   rB   )rE   vs     r   rF   z,SettingDefinition.__str__.<locals>.<genexpr>  s     8SV8rG   )r   rL   r~   r   listrH   )r   r   s     r   r   zSettingDefinition.__str__  sr    ::ii[!djj5$-0HH8TZZ88Eii[%))))Adjj\**r   r(   r^   r$   r   r   r  r    s    
+r   r  N) fontTools.voltLib.errorr   typingr   r   objectr&   r4   r8   r:   rJ   r`   rn   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$   r   r   <module>r     sV   0 * *"f "	 		 	
Ly 
Li 2=i =2(
 (': '2(
 (,8J 8 y $	 $	 7y 7tY 	#9 		%; 		%; 		2H 	y  i $9 .Y 	 &
y 
,+	 +r   