o
    Si                     @   sL   d dl Z d dlmZ ddlmZ ddlmZ ddlmZ G dd de	Z
dS )	    N)warn   )Cn2An)An2Cn)
UNIT_CN2ANc                   @   sF   e Zd ZdddZddededefdd	ZddededefddZdS )	TransformreturnNc                 C   sf   d| _ dtt | _t j| _t j	| _	d| j  | j d| j  | j d| _
d| j d| _d S )Nu   零一二三四五六七八九 u   负?([u   ]+点)?[z]+z-?([0-9]+.)?[0-9]+[)all_numjoinlistr   keysall_unitr   cn2anr   an2cn
cn_patternsmart_cn_patternself r   C/home/ubuntu/.local/lib/python3.10/site-packages/cn2an/transform.py__init__
   s   

$zTransform.__init__r   inputsmethodc                    sb  |dkrl| dd dd dd}td j d	 j d
 j d j d	 fdd|}t j d j  fdd|}td j  fdd|}t j d fdd|}t j fdd|}|S |dkrtd fdd|}td fdd|}td fdd|}td fdd|}td fd d|}|S td!| d")#Nr   u   廿u   二十u   半z0.5u   两2z((()|(u	   ))年)?([u   十]+月)?([u
   十]+日)?c                         |  ddS )Nr   date_Transform__sub_utilgroupxr   r   r   <lambda>       z%Transform.transform.<locals>.<lambda>   分之c                    r   )Nr   fractionr   r!   r   r   r   r#      r$   	   百分之c                    r   )Nr   percentr   r!   r   r   r   r#      r$   	   摄氏度c                    r   )Nr   celsiusr   r!   r   r   r   r#   !   r$   c                    r   )Nr   numberr   r!   r   r   r   r#   $   r$   r   u'   (\d{2,4}年)?(\d{1,2}月)?(\d{1,2}日)?c                    r   )Nr   r   r   r!   r   r   r   r#   )   r$   z\d+/\d+c                    r   )Nr   r&   r   r!   r   r   r   r#   ,   r$   z-?(\d+\.)?\d+%c                    r   )Nr   r(   r   r!   r   r   r   r#   /   r$   u   \d+℃c                    r   )Nr   r*   r   r!   r   r   r   r#   2   r$   z-?(\d+\.)?\d+c                    r   )Nr   r+   r   r!   r   r   r   r#   5   r$   zerror method: z#, only support 'cn2an' and 'an2cn'!)replaceresubr   r   r
   
ValueError)r   r   r   outputr   r   r   	transform   sJ   $zTransform.transformr+   sub_modec              
      s6  z|r|dkr|dkr t d j d j d fdd|W S |dkrH|d	 d
krEt  j fdd|}|d\}}| d| W S |W S |dkrbt d j  fdd|ddd W S |dkrzt  j d fdd|ddW S |dkrt |dW S td| d|dkrt d fdd|}t d fd d|W S |dkrt d fd!d|}|d\}}| d| W S |dkrو 	|d d" d#d W S |dkrd 	|d d" d# W S |dkr 	|d#W S td| dW d S  ty } zt
t| |W  Y d }~S d }~ww )$Nr   r   z((r   z))c                       t  |  dS Nsmartstrr   r    r!   r   r   r   r#   A       z&Transform.__sub_util.<locals>.<lambda>r&   r   u   百c                    r3   r4   r6   r!   r   r   r   r#   E   r8   r%   /r(   u   (?<=百分之)c                    r3   r4   r6   r!   r   r   r   r#   L   r8   r'   r	   %r*   u   (?=摄氏度)c                    r3   r4   r6   r!   r   r   r   r#   O   r8   r)   u   ℃r+   r5   zerror sub_mode: z !u
   \d+(?=年)c                         |  dS )Ndirectr   r    r!   r   r   r   r#   W       z\d+c                    r;   Nlowr=   r!   r   r   r   r#   Y   r>   c                    r;   r?   r=   r!   r   r   r   r#   [   r>   r@   )r-   r.   r   r   splitr,   r7   r   	Exceptionr   r   )r   r   r   r2   frac_result	numeratordenominatorer   r   r   
__sub_util;   sl   
)zTransform.__sub_util)r   N)r   )r   r+   )__name__
__module____qualname__r   r7   r1   r   r   r   r   r   r   	   s    
)r   )r-   warningsr   r   r   r   r   confr   objectr   r   r   r   r   <module>   s    