o
    Ni1                     @   s   d dl Z d dlZd dlmZ ddlmZmZmZ G dd dZG dd dZ	G d	d
 d
Z
G dd dZG dd dZG dd dZdS )    N)Dict   )ChConfigurationsConvert_Tablesc                	   @   s   e Zd ZU dZeed< dd Zejddde	de	d	e
e	e	f fd
dZde	d	e	fddZde	d	e	fddZde	d	e	fddZde	d	e	fddZde	d	e	fddZde	d	e	fddZdS )IConv    _MAXLENc                 C   sL   t ddd| _t ddd| _t ddd| _t d| _td| _td| _d S )NaHepburn)methodKunreiPassportKH)	H2_hahconv_hakconv_hapconv_hkconvK2_khconvSym2_saconvself r   D/home/ubuntu/.local/lib/python3.10/site-packages/pykakasi/scripts.py__init__   s   

zIConv.__init__   )maxsizeotexthirareturnc              
   C   sN   |  |}| |}|||| | || | || | |d}|S )N)origr"   kanahepburnkunreipassport)_h2k_k2h_s2a_h2ah_h2ak_h2ap)r   r!   r"   r%   tmpr   r   r   convert   s   

zIConv.converttextc                 C   s   d}d}t |}||k r\t|| j |}| j||| \}}|dkr-||7 }||7 }n+|| tjv rJt |dkrA||d 7 }n|d7 }|d7 }n||||d  7 }|d7 }||k s|S )N r   -r   )lenminr	   r   r0   r   long_symbols)r   r1   resultilengthwtl1r   r   r   r+   &   s$   

z
IConv._s2ac                 C      d}d}|t |k rAt|| j t |}| j||| \}}|dkr-||7 }||7 }n||||d  7 }|d7 }|t |k s
|S Nr2   r   r   )r5   r6   r	   r   r0   r   r1   r8   r9   r;   r<   r=   r   r   r   r*   <      
	z
IConv._k2hc                 C   r>   r?   )r5   r6   r	   r   r0   r@   r   r   r   r)   J   rA   z
IConv._h2kc                 C   r>   r?   )r5   r6   r	   r   r0   r@   r   r   r   r-   X   rA   zIConv._h2akc                 C   r>   r?   )r5   r6   r	   r   r0   r@   r   r   r   r,   f   rA   zIConv._h2ahc                 C   r>   r?   )r5   r6   r	   r   r0   r@   r   r   r   r.   t   rA   zIConv._h2apN)__name__
__module____qualname__r	   int__annotations__r   	functools	lru_cachestrr   r0   r+   r*   r)   r-   r,   r.   r   r   r   r   r      s   
 
 r   c                   @   sF   e Zd ZdZdZdZdddZedd Zd	d
 Z	dd Z
dd ZdS )r   N`      r   c                 C   sl   |dkr&|dkrt tj| _n|dkrt tj| _nt tj| _| j| _d S |dkr0| j| _d S | j	| _d S )Nr
   r   r   r   )
Jisyor   jisyo_passport_hira	_kanadictjisyo_kunrei_hirajisyo_hepburn_hira	convert_ar0   	convert_Kconvert_noopr   moder   r   r   r   r      s   zH2.__init__c                 C   s@   dt |d   k odk n  pdt |d   kodkS   S )N@0  r   0  P R )ordclscharr   r   r   isRegion   s   @zH2.isRegionc                 C   l   d}d}t | j t|}td|d D ]}| j|d | r1||k r1|}| j|d | }q||fS Nr2   r3   r   r6   rN   	maxkeylenr5   rangehaskeylookupr   r1   Hstrmax_lenrxr   r   r   rQ         zH2.convert_ac                 C   s   d}d}t |}t|D ]J}dt||   k rdk r0n n|tt|| | j  }|d7 }qdt||   kr>dkrRn n|tt|| | j  }|d7 }q ||fS ||fS )Nr2   r   rV   rW   r   rX   rY   )r5   rc   rZ   chr_diff_ediffrf   r   r   r   rR      s    
 
zH2.convert_Kc                 C      |d dfS Nr   r   r   r   r1   r   r   r   rS         zH2.convert_noopr   )rB   rC   rD   rN   rm   rn   r   classmethodr^   rQ   rR   rS   r   r   r   r   r      s    

r   c                   @   sj   e Zd ZdZdZdZdZdddZedd Z	ed	d
 Z
edd Zdd Zdd Zdd Zdd ZdS )r   NrJ   rK   r   c                 C   sx   t tj| _|dkr,|dkrt tj| _n|dkr t tj| _nt tj| _| j| _	d S |dkr6| j
| _	d S | j| _	d S )Nr
   r   r   r   )rL   r   jisyo_halfkana_halfkanadictjisyo_passportrN   jisyo_kunreijisyo_hepburnrQ   r0   	convert_hrS   rT   r   r   r   r      s   zK2.__init__c                 C   s8   t |d }| |p| |pd|  kodkS   S )Nr   d g )rZ   _is_katakana_is_half_width_kana)r\   r]   chr   r   r   r^      s   ,zK2.isRegionc                 C      d|  k o	dk S   S )N0  0  r   r\   r   r   r   r   r}         zK2._is_katakanac                 C   r   )Nie  i  r   r   r   r   r   r~      r   zK2._is_half_width_kanac                 C   sP   d}d}dD ]}| j |d | r#|}| j |d | } ||fS q||fS )Nr2   r3   )   r   )rv   rd   re   )r   r1   rg   rh   rj   r   r   r   _convert_half_kana   s   zK2._convert_half_kanac                 C   r_   r`   ra   rf   r   r   r   rQ      rk   zK2.convert_ac                 C   s  d}d}t |}d}||k rdt||   krdk r4n n|tt|| | j  }|d7 }|d7 }nt|| dkrI|d }|d7 }|d7 }ndt||   k rWdk ron n|tt|| | j  }|d7 }|d7 }nddt||   kr}d	k rn n|||  }|d7 }|d7 }nE| t|| r| ||d  \}}|dkr||7 }||7 }t|d
kr|| }n|tt|| j  }n|d7 }|d7 }n	 ||fS ||k s||fS )Nr2   r   r{   r|   r   u   んr   i0  r   i0  )r5   rZ   rl   rn   rm   r~   r   )r   r1   rg   rh   ri   rj   kstrr:   r   r   r   rz      sF    

 
 


zK2.convert_hc                 C   ro   rp   r   rq   r   r   r   rS     rr   zK2.convert_nooprs   )rB   rC   rD   rN   rv   rm   rn   r   rt   r^   r}   r~   r   rQ   rz   rS   r   r   r   r   r      s     




&r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 ZdS )
rL   Nc                 C   sF   t |}t|d}t|| _W d    d S 1 sw   Y  d S )Nrb)r   dictpathopenpickleload_dict)r   dictnamesrcdr   r   r   r   "  s   
"zJisyo.__init__c                 C   s
   || j v S Nr   r   keyr   r   r   rd   '     
zJisyo.haskeyc                 C   s
   | j | S r   r   r   r   r   r   re   *  r   zJisyo.lookupc                 C   s
   | j d S )N_max_key_len_r   r   r   r   r   rb   -  r   zJisyo.maxkeylen)rB   rC   rD   r   r   rd   re   rb   r   r   r   r   rL     s    rL   c                   @   s>   e Zd Zdd ZedefddZdd Zdd	 Zd
d Z	dS )r   c                 C       |dkr
| j | _d S | j| _d S )Nr
   )rQ   r0   rS   r   rU   r   r   r   r   2     zSym2.__init__r]   c                 C   s  t |d }tj|  kotjkn  ptj|  kotjkn  ptj|  ko-tjkn  ptj|  ko;tj	kn  ptj
|  koItjkn  ptj|  koWtjkn  ptj|  koetjkn  ptj|  kostjkn  pd|  kodkn  p|dkp|dkS )Nr      i^  iQ  i  )rZ   r   ideographic_spacepostal_mark_face	wavy_dashideographic_half_fill_spacegreece_Alpha
greece_Rhogreece_Sigmagreece_Omegagreece_alphagreece_omega
cyrillic_Acyrillic_yazenkaku_exc_markzenkaku_number_ninelatin1_inverted_exclamlatin1_y_diaeresis)r\   r]   cr   r   r   r^   8  s,   	
zSym2.isRegionc                 C   s  t |d }tj|  krtjkrn ntj|tj  S tj|  kr(tjkr2n ntj|tj  S tj	|  kr>tj
krHn ntj|tj	  S tj|  krTtjkr^n ntj|tj  S tj|  krjtjkrsn ntj|d  S |tjks}|tjkrtj|d  S tj|  krtjkrn ntj|tj  S tj|  krtjkrn nt|tj t d S d|  krdkrn ntd| d S d|  krdk rn ntd	| d S tj|  krtjkrn d
S tj|tj  S d
S )Nr   0r   i@  A   i!  iA  i_  a   r2   )rZ   r   r   r   r   symbol_table_1r   r   symbol_table_2r   r   symbol_table_3r   r   symbol_table_4r   r   cyrillic_table
cyrillic_E
cyrillic_er   zenkaku_slash_marksymbol_table_5zenkaku_number_zeror   rl   r   r   latin1_tabler   r1   r   r   r   r   _convertI  s2   zSym2._convertc                 C   s*   |  |}|d urt|dkr|dfS dS )Nr   r   r2   r   r   r5   r   r1   r<   r   r   r   rQ   d  s   
zSym2.convert_ac                 C   ro   rp   r   rq   r   r   r   rS   k  rr   zSym2.convert_noopN)
rB   rC   rD   r   rt   rI   r^   r   rQ   rS   r   r   r   r   r   1  s    r   c                   @   s8   e Zd Zdd Zedd Zdd Zdd Zd	d
 ZdS )A2c                 C   r   )NE)	convert_Er0   rS   r   r   r   r   r   p  r   zA2.__init__c                 C   s$   t jt|d   kot jk S   S )Nr   )r   spacerZ   deleter[   r   r   r   r^   v  s   $zA2.isRegionc                 C   s   t |d }tj|  krtjkrn ntj|tj  S tj|  kr(tjkr4n n
ttj	| tj S tj
|  kr@tjkrJn ntj|tj
  S tj|  krVtjkrbn n
ttj| tj S tj|  krntjkryn dS tj|tj  S dS )Nr   r2   )rZ   r   r   at_markr   alpha_table_1
alphabet_A
alphabet_Zrl   	zenkaku_A
square_bra
back_quotealpha_table_2
alphabet_a
alphabet_z	zenkaku_abracket_bratildaalpha_table_3r   r   r   r   r   z  s   zA2._convertc                 C   s   |  |}t|r|dfS dS )Nr   r   r   r   r   r   r   r     s   
zA2.convert_Ec                 C   ro   rp   r   rq   r   r   r   rS     rr   zA2.convert_noopN)	rB   rC   rD   r   rt   r^   r   r   rS   r   r   r   r   r   o  s    
r   )rG   r   typingr   
propertiesr   r   r   r   r   r   rL   r   r   r   r   r   r   <module>   s   w8d>