o
    Ni                     @   sx   d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlm	Z
 d dlmZ eeejZG dd deZd
dd	ZdS )    N)Path)unicodedata)Counterc                   @   sV   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dddZdS )Transliteratorc                 C   s   t ttdddd}t|}W d    n1 sw   Y  |d | _|d | _|d d | _|d	 | _|d
 | _	g d| _
d S )Nzjson/gimeltra_data.jsonrzutf-8)encodingssubccmpsimpgeneralfinaliga)HebrzHebr-ArSyrjSyrnzArab-FazArab-PaLatnzLatn-NoTypeArabzArab-UrThaa)openr   cwdjsonloaddbdb_ccmpdb_simplifydb_finadb_liga	vocalized)selffdata r"   I/home/ubuntu/.local/lib/python3.10/site-packages/aksharamukha/gimeltra.py__init__   s   



zTransliterator.__init__c                 C   s0   t dd |D }|dd d }|sd}|S )Nc                 S   s   g | ]}t |qS r"   )ucdscript).0cr"   r"   r#   
<listcomp>    s    z.Transliterator.auto_script.<locals>.<listcomp>   r   Zyyy)r   most_common)r   textsc_countscr"   r"   r#   auto_script   s
   zTransliterator.auto_scriptc                 C   s8   |}|dkr|  |||}| |||}| ||}|S Nr   )_preprocess_convert_postprocess)r   r-   r/   to_sctr"   r"   r#   _tr&   s   zTransliterator._trc                 C   sr   |}| j |i  D ]
\}}|||}q|| jvs || jvr-td|}tdd|}t	
dt|  |S )NNFDz(?![\u05C4\u0308])\p{M} zPre: )r   getitemsreplacer   r%   	normalizeresubloggingdebuglist)r   r-   r/   r5   r6   rule_irule_or"   r"   r#   r2   .   s   zTransliterator._preprocessc                 C   s   |}| j |i  D ]0\}}td| dd| d|}td| dd| d|}td| d| d	|}q| j|i  D ]
\}}|||}qEtd
t	|  |S )Nz(\p{L})(\p{M}*?)(z)(\p{M}*?)([^\p{L}])z{1}{2}z{4}{5}z)(\p{M}*?)$z{4}(z)(\p{M}+)(\p{L})z{2}{3}zPost: )
r   r:   r;   r>   subfr   r<   r@   rA   rB   )r   r-   r/   r6   rC   rD   r"   r"   r#   r4   :   s   zTransliterator._postprocessc                 C   sH   t | j| d }|jtdd |D ]}||| j| d | }q|S )Nr   Tkeyreverse)rB   r   sortlenr<   )r   r-   r/   r5   charscharr"   r"   r#   	_to_latinK   s
   zTransliterator._to_latinc                    s   t | jd |   jtdd  fdd| jD }|D ].}|| jv rJd|v rAd| j| v rA||| j| }|d| jd }q||| j| }q D ]}||| jd | | }qM|S )Nr   TrG   c                    s   g | ]}| vr|qS r"   r"   )r'   xrL   r"   r#   r)   b   s    z.Transliterator._from_latin.<locals>.<listcomp>u   ̽)rB   r   rJ   rK   r   r<   )r   r-   r/   r5   chars_missingrM   r"   rP   r#   _from_latinW   s   	
zTransliterator._from_latinc                 C   sH   |dkr|  |||S |dkr| |||S |  |||}| |||S r1   )rN   rR   )r   r-   r/   r5   txt_latnr"   r"   r#   r3   z   s   zTransliterator._convertNr   c                 C   sT   |s|  |}t||d tdt|  ||kr&| |||}|S |}|S )N)r&   	to_scriptzText: )r0   r@   rA   rB   r7   )r   r-   r/   r5   resr"   r"   r#   tr   s   
zTransliterator.trr1   )__name__
__module____qualname__r$   r0   r7   r2   r4   rN   rR   r3   rV   r"   r"   r"   r#   r      s    
#	r   r   c                 C   s    t  }||kr|| ||S | S )N)r   rV   )r-   r/   r5   rV   r"   r"   r#   rV      s   rV   r1   )osregexr>   pathlibr   r@   r   	langcodes	fontToolsr   r%   collectionsr   __file__parentr   objectr   rV   r"   r"   r"   r#   <module>   s   |