o
    ªZhÊ  ã                   @   s8   d dl Z d dlmZ dd„ Zdd„ ZG dd„ deƒZdS )	é    N)ÚTextc                 C   ó2   d|  } t  dj| ¡ dd| ¡} | dd … } | S )Nú z(?<=\s{abbr})\.(?=(\s\d|\s+\())©Úabbrõ   âˆ¯é   ©ÚreÚsubÚformatÚstrip©Útxtr   © r   úR/var/www/html/lang_env/lib/python3.10/site-packages/pysbd/abbreviation_replacer.pyÚreplace_pre_number_abbr   ó   r   c                 C   r   )Nr   z(?<=\s{abbr})\.(?=(\s|:\d+))r   r   r   r	   r   r   r   r   Úreplace_prepositive_abbr   r   r   c                   @   sD   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S )ÚAbbreviationReplacerc                 C   s   || _ || _d S )N)ÚtextÚlang)Úselfr   r   r   r   r   Ú__init__   s   
zAbbreviationReplacer.__init__c                 C   s„   t | jƒj| jj| jjg| jjj¢R Ž | _d}| j d¡D ]	}||  	|¡7 }q|| _|  
¡  t | jƒj| jjjŽ | _|  ¡ | _| jS )NÚ T)r   r   Úapplyr   ZPossessiveAbbreviationRuleZKommanditgesellschaftRuleZSingleLetterAbbreviationRulesZAllÚ
splitlinesÚ"search_for_abbreviations_in_stringÚ"replace_multi_period_abbreviationsZ	AmPmRulesÚ)replace_abbreviation_as_sentence_boundary)r   Zabbr_handled_textÚliner   r   r   Úreplace   s   
þ
ý
zAbbreviationReplacer.replacec                 C   s8   d  dd„ | jD ƒ¡}d |¡}t |d| j¡| _| jS )Nú|c                 s   s    | ]}d   |¡V  qdS )z
(?=\s{}\s)N)r   )Ú.0Úwordr   r   r   Ú	<genexpr>-   s   € zQAbbreviationReplacer.replace_abbreviation_as_sentence_boundary.<locals>.<genexpr>u@   (Uâˆ¯S|U\.S|Uâˆ¯K|Eâˆ¯U|E\.U|Uâˆ¯Sâˆ¯A|U\.S\.A|I|i.v|I.V)âˆ¯({})z\1.)ÚjoinZSENTENCE_STARTERSr   r
   r   r   )r   Zsent_startersÚregexr   r   r   r   ,   s   
z>AbbreviationReplacer.replace_abbreviation_as_sentence_boundaryc                 C   s(   dd„ }t j| jj|| jt jd| _d S )Nc                 S   s    |   ¡ } t t d¡d| ¡} | S )NÚ.r   )Úgroupr
   r   Úescape)Úmatchr   r   r   Úmpa_replace3   s   zLAbbreviationReplacer.replace_multi_period_abbreviations.<locals>.mpa_replace©Úflags)r
   r   r   ZMULTI_PERIOD_ABBREVIATION_REGEXr   Ú
IGNORECASE)r   r,   r   r   r   r   2   s   üz7AbbreviationReplacer.replace_multi_period_abbreviationsc                 C   s8   d| }t  djt  | ¡ ¡dd|¡}|dd … }|S )Nr   zB(?<=\s{abbr})\.(?=((\.|\:|-|\?|,)|(\s([a-z]|I\s|I'm|I'll|\d|\())))r   r   r   )r
   r   r   r*   r   )r   r   r   r   r   r   Úreplace_period_of_abbr?   s   ÿûz+AbbreviationReplacer.replace_period_of_abbrc           
      C   s   |  ¡ }| jjjD ]<}| ¡ }||vrq	tjd |¡|tjd}|s#q	dt	t 
|¡ƒ d }t ||¡}t|ƒD ]\}}	|  ||	||¡}q8q	|S )Nz(?:^|\s|\r|\n){}r-   z(?<={z} ).{1})Úlowerr   ÚAbbreviationZABBREVIATIONSr   r
   Úfindallr   r/   Ústrr*   Ú	enumerateÚscan_for_replacements)
r   r   Zloweredr   ÚstrippedZabbrev_matchZnext_word_startÚ
char_arrayÚindr+   r   r   r   r   N   s$   ÿÿÿz7AbbreviationReplacer.search_for_abbreviations_in_stringc           	      C   s¤   z|| }W n t y   d}Y nw | jjj}| jjj}t|ƒ ¡ }|r,| ¡  ¡ |v rP| ¡  ¡ |v r;t	||ƒ}|S | ¡  ¡ |v rJt
||ƒ}|S |  ||¡}|S )Nr   )Ú
IndexErrorr   r2   ZPREPOSITIVE_ABBREVIATIONSZNUMBER_ABBREVIATIONSr4   Úisupperr   r1   r   r   r0   )	r   r   Úamr9   r8   ÚcharZprepositiveZnumber_abbrÚupperr   r   r   r6   a   s"   ÿ


ü
ÿz*AbbreviationReplacer.scan_for_replacementsN)
Ú__name__Ú
__module__Ú__qualname__r   r!   r   r   r0   r   r6   r   r   r   r   r      s    r   )r
   Zpysbd.utilsr   r   r   Úobjectr   r   r   r   r   Ú<module>   s
   		