
    $HJj                         d Z ddlZdaddZd Zedk(  r/ e edd	              e edd
	              e ed             yy)z"
https://github.com/kyubyong/g2pK
    Nu   군데 권 개 그루 닢 두 마리 모 모금 뭇 발 발짝 방 번 벌 보루 살 수 술 시 쌈 움큼 정 짝 채 척 첩 축 켤레 톨 통 가지 배 시간 살 명 줄 곳Tc                    t        j                  dd|       } | dk(  ry|s| dk(  ryd}d}t        ||      D ci c]  \  }}|d	|z    }}}d
}d}t        ||j                               D 	ci c]  \  }}	||	
 }
}}	t        ||j                               D ci c]  \  }}||
 }}}g }t	        |       D ]  \  }}t        |       |z
  dz
  }|st        |       dk\  rE|dk(  r|j                  |d      }n\|dk(  rW|j                  |d      dz   }|j                  dd      }n/|dk(  r|
j                  |d      }n|dk(  r|j                  |d      }|dk(  rY|dz  dk(  r?|t        dt        |             d }dj                  |      dk(  r$|j                  d       |j                  d       |dk(  r)|j                  |d      dz   }|j                  dd      }n|dk(  r)|j                  |d      dz   }|j                  dd      }n|dk(  r)|j                  |d      dz   }|j                  dd      }n`|dk(  r)|j                  |d      dz   }|j                  dd      }n2|dk(  r)|j                  |d      dz   }|j                  dd      }n|dk(  r(|j                  |d      dz   }|j                  dd      }n|dk(  r|j                  |d      dz   }n|dk(  r|j                  |d      dz   }n|d k(  r|j                  |d      dz   }n|d!k(  r|j                  |d      dz   }nk|d"k(  r|j                  |d      d#z   }nP|d$k(  r|j                  |d      dz   }n5|d%k(  r|j                  |d      dz   }n|d&k(  r|j                  |d      dz   }|j                          dj                  d' |D              S c c}}w c c}	}w c c}}w )(u*  
    Process a string looking like arabic number.
    num: string. Consists of [0-9,]. e.g., 12,345
    sino: boolean. If True, sino-Korean numerals, i.e., 일, 이, .. are considered.
        Otherwise, pure Korean ones in their modifying forms such as 한, 두, ... are returned.
    단, 3자리 이상의 수는 반드시 sino로 적용
    >>> process_num("123,456,789", sino=True)
    일억이천삼백사십오만육천칠백팔십구

    >>> process_num("123,456,789", sino=False)
    일억이천삼백사십오만육천칠백여든아홉
    , 0u   영20u   스무	123456789u   일이삼사오육칠팔구^u4   한 두 세 네 다섯 ^여섯 일곱 ^여덟 아홉u8   열 스물 서른 마흔 쉰 예순 일흔 여든 아흔      r   u   십u   일십   N   u   백u   일백u   천u   일천u   만u   일만            u   억	   
         u   조         c              3       K   | ]  }|  y w)N ).0elems     _/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/misaki/g2pkc/numerals.py	<genexpr>zprocess_num.<locals>.<genexpr>d   s     /JD4Js   )resubzipsplit	enumeratelengetreplaceminjoinappend)numsinodigitsnamesdn
digit2name	modifiersdecimalsmod	digit2moddec	digit2dec
spelledoutidigitname
last_threes                     r   process_numr<      s    &&b#
C
czC4KF)E'*65'9:'9tq!!SU('9J:FIIH&)&)//2C&DE&DFAsC&DIE&)&(..2B&CD&CFAsC&CIDJcN5HqL13s8q=Av!~~eR0a!~~eR058||He4Av }}UB/a }}UB/C<1uz'QJ)@(@(AB
77:&",%%b)!!"%6>>%,u4D<<%0D!V>>%,u4D<<%0D!V>>%,u4D<<%0D!V>>%,u4D<<%0D!V>>%,u4D<<%0D!V>>%,u4D<<%0D!V>>%,u4D!V>>%,u4D"W>>%,u4D"W>>%,u4D"W>>%,u4D"W>>%,u4D"W>>%,u4D"W>>%,u4D$q #t 77/J///E ; FDs   O-OOc                    t        t        j                  d|             }|D ]b  }|\  }}|j                         }|t        j                         v rt        |d      }nt        |d      }| j                  | | | |       } d d}d}t        ||      D ]  \  }	}
| j                  |	d|
z         }  | j                  dd	      } | j                  d
d      } | S )u   Convert a annotated string such that arabic numerals inside are spelled out.
    >>> convert_num("우리 3시/B 10분/B에 만나자.")
    우리 세시/B 십분/B에 만나자.
    u"   ([\d][\d,]*)( ?[ㄱ-힣]+)?(?:/B)?Fr+   T
0123456789u   영일이삼사오육칠팔구r	   u   십^육u   심뉵u   백^육u   뱅뉵)	setr   findalllstripBOUND_NOUNSr"   r<   r&   r!   )stringtokenstokenr*   bnbn_sr7   r,   r-   r.   r/   s              r   convert_numrI   g   s     @&IJFRyy{;$$&&$Su5J$St4J3%tTF.CD  F,EFE"13q5) # ^^Ix0F^^Ix0FM    __main__z123,456,789r>   Fu#   우리 3시/B 10분/B에 만나자.)T)__doc__r   rC   r<   rI   __name__printr   rJ   r   <module>rO      s^    
 FX0v< z	+m$
/0	+m%
01	+;
<=	 rJ   