o
    Ni                     @   s   d dl Z d dlmZmZmZ d dlZddlmZ ddlm	Z	 ddl
mZmZmZmZmZ G dd deZG d	d
 d
eZG dd de jZG dd de jZG dd dZdS )    N)DictListTuple   )JConv)Ch)A2H2IConvK2Sym2c                   @      e Zd ZdS )PyKakasiExceptionN__name__
__module____qualname__ r   r   C/home/ubuntu/.local/lib/python3.10/site-packages/pykakasi/kakasi.pyr          r   c                   @   r   )UnknownCharacterExceptionNr   r   r   r   r   r      r   r   c                   @   s    e Zd ZdZdZdZdZdZdS )_TYPEr               N)r   r   r   KANJIKANAHIRAGANASYMBOLALPHAr   r   r   r   r      s    r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )_ACTIONr   r   r   r   r      N)	r   r   r   $NOBUFOUT_AND_OUTPUT_CURRENT_AND_NEXTBUFOUT_AND_SKIP_CURRENT"BUFOUT_AND_OUTPUT_CURRENT_AND_NEXTPUT_AND_NEXTBUFOUT_AND_NEXT
DO_NOTHINGr   r   r   r   r!       s    r!   c                   @   sB   e Zd ZdZdd Zedd Zdedee	eef  fdd	Z
d
S )Kakasiz/Kakasi is a conversion class for Japanese text.c                 C   s   t  | _t | _d S N)r   _jconvr
   _iconv)selfr   r   r   __init__,   s   zKakasi.__init__c                 C   s
   t |S r*   )jaconv	normalize)clstextr   r   r   r0   0   s   
zKakasi.normalizer2   returnc           
      C   s,  t |dkrdddddddgS d}d}g }d}tj}|t |k r|| tjv r1tj}tj}n|| tjv r=tj	}n
t
|| rT|tjkrMtj	}ntj}tj}nt|| rk|tjkrdtj	}ntj}tj}nt|| r|tjkr{tj	}ntj}tj}nt|| r|tjkrtj}ntj}tj}n| j|| rt |dkr|| j|| | j||d |\}}	tj}|	dkr||||	  }|}||	7 }tj}np|| }d}|d7 }tj}nbdt||   krdksn dt||   krd	kr#n ntj}t |dkr|| j|| |d7 }tj}n$t |dkr4|| j|| || j|| d |d7 }tj}|tjkrl||| 7 }||| 7 }|| j|| d}d}|d7 }n|tjkrt |dkr|| j|| || }|| }|d7 }nm|tj	kr||| 7 }||| 7 }|d7 }nV|tjkrt |dkr|| j|| || j|| ||  d}d}|d7 }n(|tjkrt |dkr|| j|| d}d}|d7 }n|tjkrn	 |t |k s"t |dkr|| j|| |S )
zHConvert input text to dictionary contains KANA, HIRA and romaji results.r    )origkanahirahepburnpassportkunreiNr   i   i  i   i )lenr   r   r   endmarkr   r!   r'   long_symbolsr&   r   isRegionr   r	   r   r   r    r   r#   r+   appendr,   convertr(   r$   ordr%   )
r-   r2   original_text	kana_text_resulti	prev_typeaction_flagtlnr   r   r   r@   4   s   





D




ezKakasi.convertN)r   r   r   __doc__r.   classmethodr0   strr   r   r@   r   r   r   r   r)   )   s    
"r)   )enumtypingr   r   r   r/   kanjir   
propertiesr   scriptsr   r	   r
   r   r   	Exceptionr   r   Enumr   r!   r)   r   r   r   r   <module>   s   	