o
    ³©i„  ã                   @   s@   d dl Z d dlmZmZmZmZ G dd„ dƒZG dd„ dƒZdS )é    N)ÚEN_TN_ORDERSÚEOSÚ
ITN_ORDERSÚ	TN_ORDERSc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTokenc                 C   s   || _ g | _i | _d S ©N)ÚnameÚorderÚmembers)Úselfr   © r   úG/home/ubuntu/.local/lib/python3.10/site-packages/wetext/token_parser.pyÚ__init__   s   
zToken.__init__c                 C   s   | j  |¡ || j|< d S r   )r	   Úappendr
   )r   ÚkeyÚvaluer   r   r   r      s   zToken.appendc                 C   sz   | j d }| j | ¡ v r d| j ¡ vs| jd dkr || j  | _| jD ]}|| j ¡ vr-q#|d || j| ¡7 }q#|d S )Nz {Úpreserve_orderÚtruez	 {}: "{}"z })r   Úkeysr
   r	   Úformat)r   ÚordersÚoutputr   r   r   r   Ústring   s   

zToken.stringN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r      s    r   c                   @   s^   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTokenParserÚtnc                 C   sT   |dv sJ ‚|dkr|dkrt | _d S tƒ ‚|dkrt| _d S |dkr(t| _d S d S )N)ÚenÚzhÚjar   r   Úitn)r   r   ÚNotImplementedErrorr   r   )r   ÚlangÚoperatorr   r   r   r   .   s   


ÿzTokenParser.__init__c                 C   s0   t |ƒdksJ ‚d| _|| _|d | _g | _d S )Nr   )ÚlenÚindexÚtextÚcharÚtokens)r   Úinputr   r   r   Úload;   s
   

zTokenParser.loadc                 C   s>   | j t| jƒd k r|  j d7  _ | j| j  | _dS t| _dS )Né   TF)r&   r%   r'   r(   r   )r   r   r   r   ÚreadB   s   zTokenParser.readc                 C   s2   | j tk}|r| j dkr|  ¡ }|r| j dks|S )Nú ©r(   r   r-   )r   Únot_eosr   r   r   Úparse_wsJ   s
   
ÿzTokenParser.parse_wsc                 C   s   | j |kr|  ¡  dS dS )NTF)r(   r-   )r   Úexpr   r   r   Ú
parse_charP   s   
zTokenParser.parse_charc                 C   s    d}|D ]	}||   |¡O }q|S )NF)r3   )r   r2   ÚokÚxr   r   r   Úparse_charsV   s   zTokenParser.parse_charsc                 C   sX   | j tksJ ‚| j tjvsJ ‚d}| j tjd v r*|| j 7 }|  ¡  | j tjd v s|S )NÚ Ú_)r(   r   r   Ú
whitespaceÚascii_lettersr-   )r   r   r   r   r   Ú	parse_key\   s   
þzTokenParser.parse_keyc                 C   sd   | j tksJ ‚d}d}| j dkr0|| j 7 }| j dk}|  ¡  |r+d}|| j 7 }|  ¡  | j dks|S )NFr7   ú"ú\r/   )r   Úescaper   r   r   r   Úparse_valuef   s   




ùzTokenParser.parse_valuec                 C   sž   |   |¡ |  ¡ rM|  ¡ }|  d¡ t|ƒ}|  ¡ rA| jdkr%|  d¡ n|  ¡ }|  d¡ |  ¡ }|  d¡ | ||¡ |  ¡ s| j	 |¡ |  ¡ s	d S d S )Nz { Ú}z: "r<   )
r+   r1   r;   r6   r   r(   r3   r?   r   r)   )r   r*   r   Útokenr   r   r   r   r   Úparseu   s"   





ø	òzTokenParser.parsec                 C   s6   |   |¡ d}| jD ]}|| | j¡d 7 }q
| ¡ S )Nr7   r.   )rB   r)   r   r   Ústrip)r   r*   r   rA   r   r   r   Úreorder‡   s
   

zTokenParser.reorderN)r   )r   r   r   r   r+   r-   r1   r3   r6   r;   r?   rB   rD   r   r   r   r   r   ,   s    

r   )r   Úwetext.constantsr   r   r   r   r   r   r   r   r   r   Ú<module>   s   