o
    ³©i!  ã                   @   s(  d dl mZ d dlmZ d dlZd dlZe dd¡Ze e 	d¡¡Z
e dd¡Ze e 	d¡¡Ze dd¡Ze e 	d¡¡Zd	D ]Zee
edd
… d < q@e
 dd„ e
 ¡ D ƒ¡ e dd„ e ¡ D ƒ¡ eg d¢ƒZdd„ Zdd„ Zi Ze
 ¡ D ]#\ZZe ¡ ev r„qydevr‰qye d¡ZeeddgƒD ]Zeee< q•qye e¡ eddƒZe e
¡ e e¡ eddƒZe e
¡ e e¡ e e¡ eddƒZe e
¡ e e¡ eddƒZe e
¡ eddƒZ e  e!e
 "¡ ƒ¡ e  e!e "¡ ƒ¡ e  e!e "¡ ƒ¡ eeeedœZ#d!dd„Z$dd„ Zdd „ Z%dS )"é    )Úproduct)Ú
TextSearchNÚcontractionszdata/contractions_dict.jsonzutf-8zdata/leftovers_dict.jsonzdata/slang_dict.json)ÚjanuaryÚfebruaryÚmarchÚaprilÚjuneÚjulyÚaugustÚ	septemberÚoctoberÚnovemberÚdecemberé   Ú.c                 C   ó   i | ]\}}|  d d¡|“qS ©ú'u   â€™©Úreplace©Ú.0ÚkÚv© r   úI/home/ubuntu/.local/lib/python3.10/site-packages/contractions/__init__.pyÚ
<dictcomp>   ó    r   c                 C   r   r   r   r   r   r   r   r   !   r   )zhe'szhe'llzwe'llúwe'dzit'szi'dr   zwe'rezi'llzwho'rezo'c                 C   sV   g }|  | ¡ g }|D ]}dd„ |D ƒ}t||ƒ}t|Ž D ]
}|  d |¡¡ qq|S )Nc                 S   s   g | ]}|g‘qS r   r   )r   Úxr   r   r   Ú
<listcomp>-   s    z$get_combinations.<locals>.<listcomp>Ú )ÚappendÚintersperser   Újoin)ÚtokensÚjoinersÚcombsÚresultsÚoptionÚcr   r   r   Úget_combinations(   s   

ÿr,   c                 C   s(   |gt | ƒd d  }| |dd d…< |S )Né   é   r   )Úlen)ÚlstÚitemÚresultr   r   r   r$   4   s   r$   r   r"   ÚinsensitiveÚnormÚobject))TF©TT)FT)FFTc                 C   s   t ||f }| | ¡S ©N)Ú	replacersr   )ÚsÚ	leftoversÚslangÚtsr   r   r   Úfixd   s   
r=   c                 C   s   t  ¡ D ]}| | |¡ qd S r7   )r8   ÚvaluesÚadd)ÚkeyÚvaluer<   r   r   r   r?   i   s   ÿr?   c           	   
   C   s¬   zt |ƒ W n ty } zt|ƒ tdƒ‚d}~ww t}| | ¡}g }|D ]-}|j| }|j| }|dk r8d}|t| ƒkrBt| ƒ}| |j	|j|j| ||… dœ¡ q&|S )a  
    Return all contractions and their location before fix for manual check. Also provide a viewing window to quickly
    preview the contractions in the text.
    :param text: texture.
    :param flank: int number, control the size of the preview window. The window would be "flank-contraction-flank".
    :return: preview_items, a list includes all matched contractions and their locations.
    zArgument flank must be integer!Nr   )ÚmatchÚstartÚendÚviewing_window)
ÚintÚ	ExceptionÚprintÚts_view_windowÚfindallrC   rD   r/   r#   rB   )	ÚtextÚflankÚer<   r)   Úpreview_itemsr2   Úwindow_startÚ
window_endr   r   r   Úpreviewn   s*   €þ




ÿrQ   r6   )&Ú	itertoolsr   Ú
textsearchr   ÚjsonÚpkgutilÚget_dataÚ	json_openÚloadsÚdecodeÚcontractions_dictÚleftovers_dictÚ
slang_dictÚmonthÚupdateÚitemsÚsetÚsafety_keysr,   r$   Úunsafe_dictr   r   ÚlowerÚsplitr&   ÚcombÚts_leftoversr?   Úts_leftovers_slangÚts_slangÚts_basicrI   ÚlistÚkeysr8   r=   rQ   r   r   r   r   Ú<module>   sl    ÿ

ÿ













ü
