o
    Ti6                     @   s8  d Z ddlmZ ddlZddlmZ ddddd	d
Zee Z	e
djde dZeg dZddddddZee Ze
djdedZddddddZee Ze
djdedZdddd d!d"Zee Ze
djdedZd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. ZdS )/u  
处理汉语拼音方案中的一些特殊情况


汉语拼音方案:

* https://zh.wiktionary.org/wiki/%E9%99%84%E5%BD%95:%E6%B1%89%E8%AF%AD%E6%8B%BC%E9%9F%B3%E6%96%B9%E6%A1%88
* http://www.moe.edu.cn/s78/A19/yxs_left/moe_810/s230/195802/t19580201_186000.html
    )unicode_literalsN)_FINALS   üu   ǖu   ǘu   ǚu   ǜ)uu   ū   úu   ǔ   ùz^(j|q|x)({tones})(.*)$|)tones)iu   ī   íu   ǐ   ìiouu   ioūu   ioúu   ioǔu   ioù)iuu   iūu   iúu   iǔu   iùz^([a-z]+)({tones})$ueiu   ueīu   ueíu   ueǐu   ueì)uiu   uīu   uíu   uǐu   uìz([a-z]+)({tones})$uenu   ūenu   úenu   ǔenu   ùen)unu   ūnu   únu   ǔnu   ùnc                 C   s   | }| dr3| dd }t|dkr|d nd}|tv r(t| | dd  } n|tv r/|} nd| } | dr]| dd }t|dkrH|d nd}|tv rU| dd } nd| dd  } | tvrc|S | S )	u  零声母转换，还原原始的韵母

    i行的韵母，前面没有声母的时候，写成yi(衣)，ya(呀)，ye(耶)，yao(腰)，
    you(忧)，yan(烟)，yin(因)，yang(央)，ying(英)，yong(雍)。

    u行的韵母，前面没有声母的时候，写成wu(乌)，wa(蛙)，wo(窝)，wai(歪)，
    wei(威)，wan(弯)，wen(温)，wang(汪)，weng(翁)。

    ü行的韵母，前面没有声母的时候，写成yu(迂)，yue(约)，yuan(冤)，
    yun(晕)；ü上两点省略。
    y   Nr      r
   wr   )
startswithlenU_TONESUV_MAPI_TONESr   )pinyin
raw_pinyinno_y_py
first_charno_w_py r!   E/home/ubuntu/.local/lib/python3.10/site-packages/pypinyin/standard.pyconvert_zero_consonantC   s$   

r#   c                 C      t dd | S )u   ü 转换，还原原始的韵母

    ü行的韵跟声母j，q，x拼的时候，写成ju(居)，qu(区)，xu(虚)，
    ü上两点也省略；但是跟声母n，l拼的时候，仍然写成nü(女)，lü(吕)。
    c                 S   s&   d | dt| d | dfS )N r   r      )joingroupr   mr!   r!   r"   <lambda>{   s   & zconvert_uv.<locals>.<lambda>)UV_REsubr   r!   r!   r"   
convert_uvt   s   r/   c                 C   r$   )u   iou 转换，还原原始的韵母

    iou，uei，uen前面加声母的时候，写成iu，ui，un。
    例如niu(牛)，gui(归)，lun(论)。
    c                 S      |  dt|  d  S Nr   r   )r(   IU_MAPr)   r!   r!   r"   r+          zconvert_iou.<locals>.<lambda>)IU_REr-   r.   r!   r!   r"   convert_iou      r5   c                 C   r$   )u   uei 转换，还原原始的韵母

    iou，uei，uen前面加声母的时候，写成iu，ui，un。
    例如niu(牛)，gui(归)，lun(论)。
    c                 S   r0   r1   )r(   UI_MAPr)   r!   r!   r"   r+      r3   zconvert_uei.<locals>.<lambda>)UI_REr-   r.   r!   r!   r"   convert_uei   r6   r9   c                 C   r$   )u   uen 转换，还原原始的韵母

    iou，uei，uen前面加声母的时候，写成iu，ui，un。
    例如niu(牛)，gui(归)，lun(论)。
    c                 S   r0   r1   )r(   UN_MAPr)   r!   r!   r"   r+      r3   zconvert_uen.<locals>.<lambda>)UN_REr-   r.   r!   r!   r"   convert_uen   r6   r<   c                 C   s,   t | } t| } t| } t| } t| } | S )u   还原原始的韵母)r#   r/   r5   r9   r<   r.   r!   r!   r"   convert_finals   s   r=   )__doc__
__future__r   repypinyin.style._constantsr   r   setkeysr   compileformatr'   r,   r   r2   IU_TONESr4   r7   UI_TONESr8   r:   UN_TONESr;   r#   r/   r5   r9   r<   r=   r!   r!   r!   r"   <module>   s^   	1			