o
    Ni                     @   s,   d dl Z dd Zd
ddZG dd	 d	ZdS )    Nc                 C   s(   i }t | tddD ]}| | ||< q	|S )NT)keyreverse)sortedlen)
input_dictoutput_dictk r	   U/home/ubuntu/.local/lib/python3.10/site-packages/indo_arabic_transliteration/utils.pysort_dict_by_descending_length   s   r   F\bc                 C   sL   d ttj| }|r||dd|  }|r!|d|d | }t|S )N|)joinmapreescapereplacecompile)arraymatch_initial_onlymatch_final_onlyboundary_regex	regex_strr	   r	   r
   get_regex_matcher_from_array	   s   
r   c                   @   s*   e Zd ZdZdddZdd Zd	d
 ZdS )StringTranslatorz
    A re-implementation of str.maketrans() to support multi-letter keys.
    More details: https://stackoverflow.com/q/63230213
    TFr   c                 C   sj   || _ |rt| j | _ t| j |||| _|r3dd | D | _|r(t| j| _t| j|||| _d S d S )Nc                 S   s   i | ]\}}||qS r	   r	   ).0r   valuer	   r	   r
   
<dictcomp>   s    z-StringTranslator.__init__.<locals>.<dictcomp>)translation_dictr   r   regexitemsreverse_translation_dictreverse_regex)selfr   sort_by_descending_key_lengthr   r   r   support_back_translationr	   r	   r
   __init__   s   zStringTranslator.__init__c                        j  fdd|S )Nc                        j | d S Nr   )r   groupmatchr#   r	   r
   <lambda>$       z,StringTranslator.translate.<locals>.<lambda>)r   subr#   textr	   r-   r
   	translate#      zStringTranslator.translatec                    r'   )Nc                    r(   r)   )r!   r*   r+   r-   r	   r
   r.   '   r/   z4StringTranslator.reverse_translate.<locals>.<lambda>)r"   r0   r1   r	   r-   r
   reverse_translate&   r4   z"StringTranslator.reverse_translateN)TFFr   T)__name__
__module____qualname____doc__r&   r3   r5   r	   r	   r	   r
   r      s
    
r   )FFr   )r   r   r   r   r	   r	   r	   r
   <module>   s    
