o
    i5                     @   s&  d dl Z dd Zd6ddZdd Zd	d
 Ze dZddd dD iZd7ddZddd dD iZ	d7ddZ
de diZe dZe de de ddZe dZe dZe dZdd  Zd!d" Zd7d#d$Zd8d&d'Zd7d(d)Zd7d*d+Zd7d,d-Zd.d/ Zd0d1 Zd2d3 Zd4d5 ZdS )9    Nc                 C   s  i ddddddddd	d
dddddddddddddddddddddd d!d"i d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDi dEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfi dgdhdidjdkdldmdndodpdqdrdsdjdtdldudvdwdxdydzd{d|d}d~ddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddēddƓddȓddʓi dd̓ddΓddГddHddJddLddՓddדddٓddۓddݓddߓddddZddddddi dddd
dddddddddddddddddddddd dd"dd$dd&dd(i dd*dd,dd.dd0dd2dd4dd6dd8dd:d d<dd>dd@ddBddDddFddHddJi ddLd	dNd
dPddRddTddVddXddZdd\dd^dd`ddbdddddfddhddjddli ddnddpddrddjddlddvddxd dzd!d|d"d~d#dd$dd%dd&dd'dd(dd)di d*dd+dd,dd-dd.dd/dd0dd1dd2dd3dd4dd5dd6dd7dd8dd9dd:di d;dd<dd=dd>dd?dd@ddAddBddCddDddEdēdFdƓdGdȓdHdʓdId̓dJdΓdKdГdHdJdLdLdMdNdO}g }dP}|t | k r|t | dQ k rg| | dKks/| | dkrg|t | dQ k r`| |dQ  |v r`|| |dQ   }|r`|dP dRvr`||dP  |dQ7 }q|t | dQ k r| |dQ  dSv r| ||dT  }||v r|||  |dT7 }q| | |v r||| |   n|| |  |dQ7 }|t | k sdР|S (U  z
    Convert Japanese hiragana and katakana to romaji (Latin alphabet representation).

    Args:
        japanese_text (str): Text containing hiragana and/or katakana characters

    Returns:
        str: The romaji (Latin alphabet) equivalent
    u   アau   イiu   ウuu   エeu   オou   カkau   キkiu   クkuu   ケkeu   コkou   サsau   シshiu   スsuu   セseu   ソsou   タtau   チchiu   ツtsuu   テteu   トtou   ナnau   ニniu   ヌnuu   ネneu   ノnou   ハhau   ヒhiu   フfuu   ヘheu   ホhou   マmau   ミmiu   ムmuu   メmeu   モmou   ヤyau   ユyuu   ヨyou   ラrau   リriu   ルruu   レreu   ロrou   ワwau   ヲwou   ンnu   ガgau   ギgiu   グguu   ゲgeu   ゴgou   ザzau   ジjiu   ズzuu   ゼzeu   ゾzou   ダdau   ヂu   ヅu   デdeu   ドdou   バbau   ビbiu   ブbuu   ベbeu   ボbou   パpau   ピpiu   プpuu   ペpeu   ポpou   キャkyau   キュkyuu   キョkyou   シャshau   シュshuu   ショshou   チャchau   チュchuu   チョchou   ニャnyau   ニュnyuu   ニョnyou   ヒャhyau   ヒュhyuu   ヒョhyou   ミャmyau   ミュmyuu   ミョmyou   リャryau   リュryuu   リョryou   ギャgyau   ギュgyuu   ギョgyou   ジャjau   ジュjuu   ジョjou   ビャbyau   ビュbyuu   ビョbyou   ピャpyau   ピュpyuu   ピョpyou   ッ    ャ   ュ   ョu   ヴvuu   ファfau   フィfiu   フェfeu   フォfou   ウィwiu   ウェweu   ウォu   あu   いu   うu   えu   おu   かu   きu   くu   けu   こu   さu   しu   すu   せu   そu   たu   ちu   つu   てu   とu   なu   にu   ぬu   ねu   のu   はu   ひu   ふu   へu   ほu   まu   みu   むu   めu   もu   やu   ゆu   よu   らu   りu   るu   れu   ろu   わu   をu   んu   がu   ぎu   ぐu   げu   ごu   ざu   じu   ずu   ぜu   ぞu   だu   ぢu   づu   でu   どu   ばu   びu   ぶu   べu   ぼu   ぱu   ぴu   ぷu   ぺu   ぽu   きゃu   きゅu   きょu   しゃu   しゅu   しょu   ちゃu   ちゅu   ちょu   にゃu   にゅu   にょu   ひゃu   ひゅu   ひょu   みゃu   みゅu   みょu   りゃu   りゅu   りょu   ぎゃu   ぎゅu   ぎょu   じゃu   じゅu   じょu   びゃu   びゅu   びょu   ぴゃu   ぴゅu   ぴょu   っ , z. )   ゃ   ゅ   ょu   　u   、u   。r      aiueon)ru   rv   rw   ri   rj   rk      )lenappendjoin)japanese_textkana_mapresultr   next_romajicombo r   C/mnt/c/Users/fbmor/ComfyUI/comfy/text_encoders/ace_text_cleaners.pyjapanese_to_romaji   s  			




"###&&&&&'''*****+++++,,,,,-----...../////000001112222233366666777778888899999:::::===>>>???@@@AAABBBCCCDDDEEEFFFGGGJK
R2(
*



r   Fc                 C   s   t | ttfs	dS | dkrdS | dk }t| } t | tr>t| }t|}t| dd }dddd	 |D  }|| }nt| }|rHd
| }|S )z
    Convert a number (int or float) to its text representation.

    Args:
        num: The number to convert

    Returns:
        str: Text representation of the number
    zInput must be a numberr   zero.rx   z point rs   c                 s   s    | ]	}t t|V  qd S N)_digit_to_textint).0digitr   r   r   	<genexpr>   s    z!number_to_text.<locals>.<genexpr>z	negative )
isinstancer   floatabs_int_to_textstrsplitr}   )numordinalnegativeint_partint_textdecimal_strdecimal_textr   r   r   r   number_to_text   s    

r   c                 C   s6  g d}g d}| dk r||  S | dk r+|| d  | d dkr(d|| d    S d S | d	k rH|| d  d
 | d dkrEdt | d   S d S | dk ret | d	 d | d	 dkrbdt | d	   S d S | dk rt | d d | d dkrdt | d   S d S t | d d | d dkrdt | d   S d S )z-Helper function to convert an integer to text)rh   onetwothreefourfivesixseveneightnineteneleventwelvethirteenfourteenfifteensixteen	seventeeneighteennineteen)
rh   rh   twentythirtyfortyfiftysixtyseventyeightyninety   d   
   r   rs   rh   i  z hundredi@B z	 thousandi ʚ;z millionz billion)r   )r   onestensr   r   r   r      s   .2222r   c                 C   s   g d}||  S )zConvert a single digit to text)
r   r   r   r   r   r   r   r   r   r   r   )r   digitsr   r   r   r      s   r   z\s+enc                 C   s*   g | ]}t d |d  t j|d fqS )z\b%s\.r   rx   )r+   compile
IGNORECASEr   xr   r   r   
<listcomp>   s    r   ))mrsmisess)mrmister)drdoctor)stsaint)cocompany)jrjunior)majmajor)gengeneral)drsdoctors)revreverend)lt
lieutenant)hon	honorable)sgtsergeant)captcaptain)esqesquire)ltdlimited)colcolonel)ftfortc                 C   s$   t | D ]\}}t||| } q| S r   )_abbreviationsr+   subtextlangregexreplacementr   r   r   !expand_abbreviations_multilingual   s   r   c              	   C   s0   g | ]}t d t |d  t j|d fqS )z%sr   rx   )r+   r   escaper   r   r   r   r   r      s    "))&z and )@z at )%z	 percent )#z hash )$z dollar )   £z pound )   °z degree c                 C   s4   t | D ]\}}t||| } | dd} q|  S )Nz  rs   )_symbols_multilingualr+   r   replacestripr   r   r   r   expand_symbols_multilingual  s   r   z([0-9]+)(st|nd|rd|th)z[0-9]+z+((\$[0-9\.\,]*[0-9]+)|([0-9\.\,]*[0-9]+\$))u+   ((£[0-9\.\,]*[0-9]+)|([0-9\.\,]*[0-9]+£))u/   (([0-9\.\,]*[0-9]+€)|((€[0-9\.\,]*[0-9]+))))USDGBPEURz\b\d{1,3}(,\d{3})*(\.\d+)?\bz\b\d{1,3}(.\d{3})*(\,\d+)?\bz([0-9]+[.,][0-9]+)c                 C   "   |  d}d|v r|dd}|S )Nr   ,rh   groupr   mr   r   r   r   _remove_commas     
r  c                 C   r   )Nr   r   rh   r   r  r   r   r   _remove_dots%  r  r  c                 C   s   |  ddd}tt|S )Nrx   r   r   )r  r   r   r   )r  r   amountr   r   r   _expand_decimal_point,  s   r  r   c                 C   sx   t tdd| ddd}t|}dddd	d
d
ddddddddd}| r:||| }|dkr:|d | }|S )Nz[^\d.]rh   r   r   r   rt   z con z et z und z e )r   esfrr;   ptitplcsr*   nlartrhur   )r   r+   r   r  r   r   
is_integerrfind)r  r   currencyr  full_amountand_equivalentslast_andr   r   r   _expand_currency1  s,    r  c                 C   s   t t| dddS )Nrx   T)r   r   r   r  r  r   r   r   r   _expand_ordinalN  s   r  c                 C   s   t t| dS )Nr   r  r  r   r   r   _expand_numberR  s   r  c                    s    dv rt tt| } nt tt| } z)t td  fdd| } t td  fdd| } t td  fdd| } W n   Y t t fd	d| } t t   fd
d| } t t	 fdd| } | S )N)r   r*   r   c                       t |  dS )Nr   r  r  r   r   r   <lambda>\      z-expand_numbers_multilingual.<locals>.<lambda>r   c                    r  )Nr   r   r!  r"  r   r   r#  ]  r$  r   c                    r  )Nr   r   r!  r"  r   r   r#  ^  r$  c                    
   t |  S r   )r  r!  r"  r   r   r#  b     
 c                    r%  r   )r  r!  r"  r   r   r#  c  r&  c                    r%  r   )r  r!  r"  r   r   r#  d  r&  )
r+   r   _comma_number_rer  _dot_number_rer  _currency_re_decimal_number_re_ordinal_re
_number_rer   r   r   r"  r   expand_numbers_multilingualV  s   r.  c                 C   s   |   S r   )lowerr   r   r   r   	lowercaseh  s   r1  c                 C   s   t td| S )Nrs   )r+   r   _whitespace_rer0  r   r   r   collapse_whitespacel  s   r3  c                 C   s   |  dd} |dkr|  dd} |  dd} |  dd	} t| } zt| |} W n   Y zt| |} W n   Y zt| |d
} W n   Y t| } | S )N"rh   r  u   İr      Ö   ö   Ü   ür"  )r   r1  r.  r   r   r3  r-  r   r   r   multilingual_cleanersp  s(   r9  c                 C   s   t | } t| } | S )zPBasic pipeline that lowercases and collapses whitespace without transliteration.)r1  r3  r0  r   r   r   basic_cleaners  s   r:  )F)r   )r   r   )r+   r   r   r   r   r   r2  r   r   r   r   r+  r,  r)  r'  r(  r*  r  r  r  r  r  r  r.  r1  r3  r9  r:  r   r   r   r   <module>   sJ   
}.












