U
    IeN                     @   s   d dl mZmZmZmZmZmZmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ G dd deZeee dd	d
Zdee ee eee dddZeeeeedf f dddZ eedddZ!eedddZ"eee edddZ#dS )    )AnyDictIteratorList
NamedTupleOptionalTuple)commands)DenominatorNotFoundErrorDoubleSubscriptsErrorDoubleSuperscriptsErrorExtraLeftOrMissingRightErrorInvalidAlignmentErrorInvalidStyleForGenfracErrorInvalidWidthError!LimitsMustFollowMathOperatorErrorMissingEndError"MissingSuperScriptOrSubscriptErrorNoAvailableTokensErrorNumeratorNotFoundError)convert_symbol)tokenizec                   @   s   e Zd ZU eed< dZeeedf  ed< dZ	ee ed< dZ
ee ed< dZee ed< dZeeeef  ed< dZee ed	< dS )
NodetokenN.children	delimiter	alignmenttext
attributesmodifier)__name__
__module____qualname__str__annotations__r   r   r   r   r   r   r   r   r   r    r%   r%   7/tmp/pip-unpacked-wheel-yt1tfwjl/latex2mathml/walker.pyr      s   
r   )datareturnc                 C   s   t | }t|S N)r   _walk)r'   tokensr%   r%   r&   walk    s    r,   N)r+   
terminatorlimitr(   c                  C   s
  g }d}| D ]}d}||krPd }|t jkr4t| }|t||d  qn|t j  krf|ks|n |t jkr|t jkrtnV|t jkrt| }tt	| t jd}t
|dks|d jt jkrtt|t
|r|nd |d}n|t jkr>tt	| t jd}t
|r,|d jt jkr,|d d }tt j|d}n|t jt jfkrz| }	W n  tk
r|   td	d
}	Y nX ||	j  krt jkrn nt||	j  krt jkrn n4|	jd k	rt
|	jdkr|	jd jt jkrtd }
|	jt jkrHt j}
z| }	|	jds*tW n tk
rF   tY nX |t jkr|	jt jkr|	jd k	rtt	| |dd}tt j|	jd f||	jd f|	jd}q|t jkr|	jt jkr|	jd k	rtt	| |dd}tt j|	j||	jd}n|t jkr~|	jt jkr~|	jd k	r~|	jd jt jkr~tt	| |dd}tt j|	jd tt j|	jd f|df|	jd}n`ztt	| |dd}W n tk
r   tY nX |	jt jt jfkr|	j}
t||	f||
d}
n|t j krz| }	W n  tk
r   td	d
}	Y nX |	jt jkr^|	jd k	r^t
|	jdkr^|	jd jt jkr^t|	jt jkr|	jd k	rt
|	jdkr|	jd jt jkrtt j|	jd tt j!d
fd}nX|	jt jkr|	jd k	rtt j|	jtt jd
f|	jd}ntt j|	tt jd
fd}	n|t j"krnd }tt	| |dd}|t j#t j$fkr\|d d d }t|||d}	nl|t j%ks|t j&rtt	| |dd}t||d}	n0|t j'krXz|tt	| |ddd }|jdrd|jdd   }t(|}|rt|d
}|| W qt|d
}|)||f W qW n  tk
rR   t|d
}Y nX n|t j*t j+fkrtt	| |dd}|d jt j,krtt jtt	| t j-dd d dftt	| |dd}t||d}n|t j.t j/t j0t j1t j2t j3fkrPtt	| |dd}|d jt jkr6|d jd k	r6|d j}t|d|d jid}n|t j4krdt| i}tt	| |d}d }t
|r|d j|kr|d d |d  }}|t|||d |r||  qn |t j5krdt| i}tt	| |ddd }|j6|d}n|t j78 t j98 t j:t j;t j<t jt j=t j>t j?t j@t jAt jBf
krpt|t| d}nj|t jCkrdt| i}tt	| |dd}t|||d}n.|t jDt jEt jFt jGt jHt jIt jJt jKfk
rd }d }|t jFk	rt| Ldt| Ld }nf|t jGk	r:ddi}t| Ldt| Ld }n4|t jHk	rLd}n"|t jIk	r^d}n|t jJk	rnd}|t jDt jFfk	rtt	| |ddd }tM|}d|i}n"|t jEt jHt jIt jJfk	rddi}tt	| |d}d }t
|
r|d j|k
r|d d |d  }}t
|dk
rD|t jHt jIfk
r@tt jddf}ntNt
|dk
rz|t jHt jIfk
rvtt jddg}ntOt
|dk
rtt j|df}t
|dk
r||}ntt jt|df|}tt jP|||dg}|d k	
r||  qn|t jQkrd }tt	| dd d }|jt j,krxtt	| t j-dd d }tt	| dd d }t
|dkrxtt j|df}|rtt jR|f|d}nt||fd}n4|t jRkr4tt	| d!dd d }tt	| dd d }t
|dkrtt j|df}|rt||f|d}nt||tt jddfd}n|t jSkrtt	| |d}d }t
|r|d j|kr|d d |d  }}t
|dkr|d jt jkr|d jr|d j}|d k	r|)t||d	d"|g  qnt||d	d"}n|t jTkrt| Ldt| Ld }tt	| |dd\}}tM|}tU|}d|i}tt	| |dd}|)t|d
t||||d#g  qnR|t jVkr"tt	| |d$d\}}}tW|\}}tW|\}}d%d&i}t|t|tt jXt|j|j|dfdf|dt|t|j|j|df|dfd}n|t jYkrtt	| |dd\}}|j}|t jkr|jd ksrt
|jdkrvtZ|jd j}|[ stZt||fdd't\| d(d)id}n$|t j]rt^|| }n
t|d
}|| |rt
||kr qq|st|S )*NFT)r   r   r-   r   )r   r   r   )r   r    r         \)r-   r.   )r   r   r   )r   r   r   z\nwidth)r   r   Z	mathcolorstyle)r   )r   r   hrefZlinethickness0z{}z[]z()r%   )r   r   r   r   )r.   z\ofr   r   r   )r   r   r   r      Zmovablelimitsfalseg"~j?z.3fem)_r	   RIGHTnextappendr   ZMIDDLEr   LEFTtupler*   lenr   ZOPENING_BRACEZCLOSING_BRACEBRACES	SUBSCRIPTSUPERSCRIPTpop
IndexErrorr   r   ZPRIMEr   ZLIMITS
startswithr   SUBSUPr   r   r   Z	OVERBRACEZ
UNDERBRACEZ
APOSTROPHEZDPRIMEZCOMMANDS_WITH_TWO_PARAMETERSZOVERSETZUNDERSETZCOMMANDS_WITH_ONE_PARAMETERZMATHZNOTr   extendZ
XLEFTARROWZXRIGHTARROWOPENING_BRACKETCLOSING_BRACKETZHSKIPZHSPACEZKERNZMKERNZMSKIPZMSPACEZCOLORZSTYLE_replaceZBIGkeysZBIG_OPEN_CLOSEZFBOXZHBOXZMBOXZTEXTZTEXTBFZTEXTITZTEXTRMZTEXTSFZTEXTTTZHREFZABOVEZATOPZABOVEWITHDELIMSZATOPWITHDELIMSZBRACEZBRACKZCHOOSEZOVERlstrip_get_dimensionr
   r   ZFRACZSQRTROOTZMATRICESZGENFRAC
_get_styleZSIDESET_make_subsupZVPHANTOMZSKEWr   isdigitintZBEGIN_get_environment_node) r+   r-   r.   groupZhas_available_tokensr   r   r   nodepreviousr   r   Z	next_nodeZnegated_symbolsymbolZsiblingZdimension_node	dimensiondenominatorZ
root_nodesZ
style_noder7   leftrightoperatorZ
left_tokenZleft_childrenZright_tokenZright_childrenZ
width_nodechildr6   r%   r%   r&   r*   %   s   


,
  
&


	


"


 ""









,



&

r*   .)rY   r(   c                 C   s   | j tjkstzx| jd k	r\dt| jd j  kr<dkr\n n| jd j tjtjtjfks`t| jd j }| jd jdd  }||fW S  t	k
r   Y dS X d S )Nr3   r   r;   r4   )r1   r%   )
r   r	   rD   AssertionErrorr   rC   rJ   rE   rF   rH   )rY   r   r   r%   r%   r&   rT   }  s*     



rT   c                 C   s,   | j }| j tjkr(| jd k	r(| jd j }|S )Nr   )r   r	   rD   r   )rY   r\   r%   r%   r&   rQ     s    rQ   c                 C   sh   | j }| j tjkr(| jd k	r(| jd j }|dkr6tjS |dkrDtjS |dkrRtjS |dkr`tjS td S )Nr   r9   123)	r   r	   rD   r   ZDISPLAYSTYLEZ	TEXTSTYLEZSCRIPTSTYLEZSCRIPTSCRIPTSTYLEr   )rY   r7   r%   r%   r&   rS     s    rS   )r   r+   r(   c           	      C   sj  |  dd }| |d }tj d| d}tt||d}t|rV|d j|krVt|d d }d}t|r|d jtjkrt	|}t
| |D ].}|jtjkr qn|jdkrt||j7 }qt|}nt|rV|d jd k	rV|d jtjks|d	rV|d jtjkrVtd
d |d jD rVddd |d jD }|dd  }td| ||dS )N{r4   r0   }r/   r1   r   lcr|*c                 s   s   | ]}|j d kV  qdS )rh   Nr2   .0cr%   r%   r&   	<genexpr>  s     z(_get_environment_node.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r)   r2   rj   r%   r%   r&   rm     s     r5   r:   )indexr	   ZENDrB   r*   rC   r   r   rL   iterr?   rM   r   r   rD   endswithZBRACKETSalljoinr   )	r   r+   start_indexenvironmentr-   r   r   Zchildren_iterrl   r%   r%   r&   rW     sB    

	rW   )Nr   )$typingr   r   r   r   r   r   r   Zlatex2mathmlr	   Zlatex2mathml.exceptionsr
   r   r   r   r   r   r   r   r   r   r   r   Zlatex2mathml.symbols_parserr   Zlatex2mathml.tokenizerr   r   r#   r,   rV   r*   rT   rQ   rS   rW   r%   r%   r%   r&   <module>   s   $8
"  Z 