o
    ªZhC  ã                   @   sn   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZ G dd	„ d	eeƒZdS )
é    N)ÚAbbreviationReplacer)ÚBetweenPunctuation)ÚCommonÚStandard)Úreplace_punctuation)Ú	Processor)ÚTextÚRulec                   @   sd   e Zd ZdZG dd„ dejƒZG dd„ deƒZG dd„ dejƒZG dd	„ d	e	ƒZ	G d
d„ de
ƒZ
dS )ÚDeutschÚdec                   @   s0   e Zd ZeddƒZeddƒZejjeeg ZdS )zDeutsch.Numbersz%(?<=\s\d)\.(?=\s)|(?<=\s\d\d)\.(?=\s)õ   âˆ¯z#(?<=-\d)\.(?=\s)|(?<=-\d\d)\.(?=\s)N)	Ú__name__Ú
__module__Ú__qualname__r	   ZNumberPeriodSpaceRuleZNegativeNumberPeriodSpaceRuler   ÚNumbersÚAll© r   r   úI/var/www/html/lang_env/lib/python3.10/site-packages/pysbd/lang/deutsch.pyr      s    

r   c                       s.   e Zd Zd‡ fdd„	Zdd„ Zdd„ Z‡  ZS )	zDeutsch.ProcessorFc                    s   t ƒ  |||¡ d S ©N©ÚsuperÚ__init__)ÚselfÚtextÚlangZ	char_span©Ú	__class__r   r   r      s   zDeutsch.Processor.__init__c                 C   s&   t | jƒj| jjjŽ | _|  ¡  | jS r   )r   r   Úapplyr   r   r   Úreplace_period_in_deutsch_dates)r   r   r   r   Úreplace_numbers   s   z!Deutsch.Processor.replace_numbersc                 C   s0   g d¢}|D ]}t  dj|dd| j¡| _qd S )N)ZJanuarZFebruaru   MÃ¤rzZAprilZMaiZJuniZJuliZAugustZ	SeptemberZOktoberZNovemberZDezemberz(?<=\d)\.(?=\s*{month}))Úmonthr   )ÚreÚsubÚformatr   )r   ÚMONTHSr    r   r   r   r   "   s   þz1Deutsch.Processor.replace_period_in_deutsch_dates)F)r   r   r   r   r   r   Ú__classcell__r   r   r   r   r      s    r   c                   @   s    e Zd Zg d¢Zg Zg d¢ZdS )zDeutsch.Abbreviation)“õ   Ã„õ   Ã¤ZadjZadmZadvÚartZasstzb.azb.sZbartZbldgZbrigZbrosZbseZbuchstZbzglZbzwu   c.-Ã -dÚcaZcaptÚchrZcmdrÚcoÚcolZcomdrÚconZcorpZcplzd.hzd.jZderglZdglZdkrzdr ZensÚetczev ZevtlÚffzg.g.azg.uÚgenZggfÚgovZhonZhospzi.fzi.h.vÚiiZiiiZinspZivZixÚjunzk.ozkath ZlfdÚltZltdzm.eZmajZmedZmessrsZmioZmlleÚmmZmmeÚmrZmrdZmrsÚmsZmsgrZmwstÚnoÚnosÚnru   o.Ã¤ÚopÚordZpfcÚphÚppZprofZpvtÚrepZrepsÚresÚrevÚrtzs.p.aÚsaZsenZsensZsfcZsgtZsogZsogenZsppÚsrÚstZstdzstr  ZsuptZsurgzu.a  zu.ezu.s.wzu.uu   u.Ã¤ZusfZuswÚvÚvglÚviZviiZviiiÚvsÚxÚxiZxiiZxiiiZxivZxixZxvZxviZxviiZxviiiÚxxzz.bzz.tzz.zzz.ztZztZzztz
univ.-profzo.univ.-profzao.univ.profzass.profzhon.profz	univ.-dozzuniv.asszstud.assZ
projektassZassZdiz	dipl.-ingÚmag)r(   r)   r8   r9   r:   r>   N)r   r   r   ZABBREVIATIONSZPREPOSITIVE_ABBREVIATIONSZNUMBER_ABBREVIATIONSr   r   r   r   ÚAbbreviation)   s    rN   c                       s6   e Zd Zd d¡Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )	zDeutsch.AbbreviationReplaceruy   Am Auch Auf Bei Da Das Der Die Ein Eine Es FÃ¼r Heute Ich Im In Ist Jetzt Mein Mit Nach So Und Warum Was Wenn Wer Wie Wirú c                    s   t ƒ  ||¡ d S r   r   )r   r   r   r   r   r   r   3   s   z%Deutsch.AbbreviationReplacer.__init__c                 C   s~   t ddƒ}t ddƒ}t| jƒj| jjg| jjj¢|‘|‘R Ž | _|  | j¡| _|  	¡  t| jƒj| jj
jŽ | _|  ¡ | _| jS )Nz(?<=\s[a-z])\.(?=\s)r   z(?<=^[a-z])\.(?=\s))r	   r   r   r   r   ZPossessiveAbbreviationRuleZSingleLetterAbbreviationRulesr   Z"search_for_abbreviations_in_stringZ"replace_multi_period_abbreviationsZ	AmPmRulesZ)replace_abbreviation_as_sentence_boundary)r   ZSingleLowerCaseLetterRuleZ&SingleLowerCaseLetterAtStartOfLineRuler   r   r   Úreplace6   s    


ÿþý
ü
z$Deutsch.AbbreviationReplacer.replacec                 C   s   t  dj|dd|¡}|S )Nz(?<={am})\.(?=\s))Úamr   )r!   r"   r#   )r   ÚtxtrQ   ÚindexZcharacter_arrayr   r   r   Úscan_for_replacementsH   s   z2Deutsch.AbbreviationReplacer.scan_for_replacements)	r   r   r   ÚsplitZSENTENCE_STARTERSr   rP   rT   r%   r   r   r   r   r   .   s    ÿr   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )zDeutsch.BetweenPunctuationc                    s   t ƒ  |¡ d S r   r   )r   r   r   r   r   r   N   s   z#Deutsch.BetweenPunctuation.__init__c                 C   s8   d}d}d|v rt  |t|¡S d|v rt  |t|¡S |S )Nu.   ,,(?=(?P<tmp>[^â€œ\\]+|\\{2}|\\.)*)(?P=tmp)â€œu/   â€ž(?=(?P<tmp>[^â€œ\\]+|\\{2}|\\.)*)(?P=tmp)â€œu   â€žz,,)r!   r"   r   )r   rR   Z,BETWEEN_UNCONVENTIONAL_DOUBLE_QUOTE_DE_REGEXZBETWEEN_DOUBLE_QUOTES_DE_REGEXr   r   r   Ú%sub_punctuation_between_double_quotesQ   s   ÿz@Deutsch.BetweenPunctuation.sub_punctuation_between_double_quotes)r   r   r   r   rV   r%   r   r   r   r   r   L   s    r   N)r   r   r   Ziso_coder   r   r   r   rN   r   r   r   r   r   r   r
      s    	r
   )r!   Zpysbd.abbreviation_replacerr   Zpysbd.between_punctuationr   Zpysbd.lang.commonr   r   Zpysbd.punctuation_replacerr   Zpysbd.processorr   Zpysbd.utilsr   r	   r
   r   r   r   r   Ú<module>   s   