o
    phZS                     @   s  d dl mZ ddlmZ ddlmZmZ d d d d ddd d ddd d dddZi dd d	d d
d dd ddddddddddddddddddddddddddddddddddZdZ	dZ
dZdZdd  Ze	e
eefd!d"Zg d#g d$g d%g d&d'd(gd)d*d+d,ggg d-g d.gg d/d0gd d1g d2gd d3g d0d4gd0d5gd4d1gd6gd d7g d0gd d1g gd8gd d9g d:gd d;g d<gd d=g d:d8gd:d8gd8d;gd>gd d?g d:gd d;g gd@gd dAg dBgd dCg dDgd dEg dBd@gdBd@gd@dCgdFgd dGg dBgd dCg gg dHg dIg dJg dKg dLdM
ZdNdOdPdQdRdSdTdUdVdW	Zd dd ddd d d ddW	ZdXdYdZd[d\d]gg d^g d_d`dXdYdZgdad\dbd]ggg dcg ddgZdedf Zdgdh Zdg dig djg dkdldmgdndodpdqggg drg dsgiZeeee d(d5d8dtdRdSdudvdVdw	Zg dxZd g dyiZedzd{ e D  d d|iZed}d{ e D  eedZg d~g dg dg dg dg dg dg ddZdddddddddZddd ddddddZeeeZ g dg dg dg dg dg dg dg dg ddw	Z!dd{ e! D Z"ee"dZ#dddddddddd	Z$g dZ%dg dg dg dg dg dg dgiZ&e&dd{ e$ D  dd Z'ddiZ(e(dd{ e$ D  ee(dZ)G dd deZ*dS )    )unicode_literals   )Num2Word_Base)
get_digitssplitbyx      )m	masculineu   мu   мужскойffeminineu   жu   женскийnneuteru   сu   среднийppluralr   
nominativeu   иu   именительныйggenitiveu   рu   родительныйddativeu   дu   дательныйa
accusativeu   вu   винительныйi      )instrumentalu   тu   творительныйr   prepositionalu   пu   предложныйFr	   Tc                 K   s   t | | fi |S N)case_classifier_element)
cases_dictnumkwargs r"   ]/var/www/html/Testing_prj/Navya-Bakers/venv/lib/python3.10/site-packages/num2words/lang_RU.pyget_num_element,   s   r$   c                 C   sZ   | t |  }t|tr|S |r|td  }n|t|  }t|tr#|S |r)|d S |d S )Nr   r   r   )CASE_INDEXES
isinstancestrGENDER_PLURAL_INDEXES)
classifiercaser   genderanimater"   r"   r#   r   0   s   

r   )   нольu   ноляu   нолюr-   u
   нолёмu   ноле)   одинu   одна   одно   одни)   одного
   однойr1   
   одних)   одномуr2   r4   
   однимr1   r.   u   однуr/   r3   r0   )r5   r2   r5   u   одними)
   одномr2   r6   r3   )   два   двеr7   u   двоеu   двухu
   двоихu   двумu
   двоимr7   r8   u
   двумяu   двоимиu   триu   троеu   трёхu
   троихu   трёмu
   троимu
   тремяu   троимиu   четыреu   четвероu   четырёхu   четверыхu   четырёмu   четверымu   четырьмяu   четверыми)   пять   пятиr:   r9   u
   пятьюr:   )
   шесть
   шестиr<   r;   u   шестьюr<   )   семь   семиr>   r=   u
   семьюr>   )   восемь   восьмиr@   r?   u   восемьюr@   )   девять   девятиrB   rA   u   девятьюrB   )
r   r   r   r   r   r            	   u
   нулевu   первu   вторu   четвёртu   пятu   шестu
   седьмu
   восьмu
   девят)	r   r   r   r   r   rC   rD   rE   rF      ойu   ый)r   r   u   аяu   оеu   ые)   огоrG   rH      ых)   омуrG   rJ      ымrH   u   уюrI   )rK   rG   rK   u   ыми)   омrG   rL   rI   c                    s    fddt D S )Nc                    s    g | ]} fd d|D qS )c                    sH   g | ] }t |tr| nt |tr fd d|D n|   qS )c                    s*   g | ]}t |tr| n|   qS r"   )r&   r'   ).0r,   
post_groupprefixr"   r#   
<listcomp>v   s
    
z3get_cases.<locals>.<listcomp>.<listcomp>.<listcomp>)r&   r'   listrM   postfixrN   r"   r#   rQ   t   s    
z(get_cases.<locals>.<listcomp>.<listcomp>r"   rM   r*   rN   r"   r#   rQ   t   s
    
zget_cases.<locals>.<listcomp>)CASE_POSTFIXES)rP   rO   r"   rN   r#   	get_casess   s   rW   c                    s6   t  tr fdd|  D   fdd|  D S )Nc                    s   i | ]\}}| qS r"   r"   )rM   r   r   post_groupsr"   r#   
<dictcomp>   s    z&get_ord_classifier.<locals>.<dictcomp>c                    s    i | ]\}}|t | | qS r"   )rW   rM   r    rP   rX   r"   r#   rZ      s    )r&   intitems)prefixesrY   r"   rX   r#   get_ord_classifier~   s
   

r_   )   третийu   третья   третье   третьи)   третьего   третьейrc      третьих)   третьемуrd   rf      третьимrc   r`   u   третьюra   re   rb   )rg   rd   rg   u   третьими)   третьемrd   rh   re   u
   четырu   семu
   восем)	r   r   r   r   r   rC   rD   rE   rF   )   надцать   надцатиrj   ri   u   надцатьюrj   )   десять   десятиrl   rk   u   десятьюrl   c                    $   i | ]\} | fd dt D qS )c                       g | ]} | qS r"   r"   rS   rP   r"   r#   rQ          <dictcomp>.<listcomp>)TENS_POSTFIXESrM   r    r"   ro   r#   rZ      s    rZ   u
   десятc                 C      i | ]	\}}||d  qS )u   надцатr"   r[   r"   r"   r#   rZ          )   двадцать   двадцатиrw   rv   u   двадцатьюrw   )   тридцать   тридцатиry   rx   u   тридцатьюry   )
   сорок   сорокаr{   rz   r{   r{   )   пятьдесят   пятидесятиr}   r|   u   пятьюдесятьюr}   )   шестьдесят   шестидесятиr   r~   u   шестьюдесятьюr   )   семьдесят   семидесятиr   r   u   семьюдесятьюr   )   восемьдесят   восьмидесятиr   r   u   восемьюдесятьюr   )   девяносто   девяностаr   r   r   r   )r   r   r   r   rC   rD   rE   rF   u   двадцатu   тридцатu   сороковu   пятидесятu   шестидесятu   семидесятu   восьмидесятu   девяност)   сто   стаr   r   r   r   )   двестиu   двухсотu   двумстамr   u   двумястамиu   двухстах)   тристаu   трёхсотu   трёмстамr   u   тремястамиu   трёхстах)   четырестаu   четырёхсотu   четырёмстамr   u   четырьмястамиu   четырёхстах)   пятьсотu   пятисотu   пятистамr   u   пятьюстамиu   пятистах)   шестьсотu   шестисотu   шестистамr   u   шестьюстамиu   шестистах)   семьсотu   семисотu   семистамr   u   семьюстамиu   семистах)   восемьсотu   восьмисотu   восьмистамr   u   восемьюстамиu   восьмистах)   девятьсотu   девятисотu   девятистамr   u   девятьюстамиu   девятистахc                 C   s&   i | ]\}}||d kr|d  ndqS )r   u   сотr"   )rM   r    r*   r"   r"   r#   rZ      s    u   миллионu   миллиардu   триллионu   квадриллионu   квинтиллионu   секстиллионu   септиллионu   октиллионu   нониллион)	r   r   r   r   rC   rD   rE   rF   
   )    а   ов)r   r   r   )u   у   амr   r   )rL      амиr   )u   е   ахr   )u   тысяча   тысячи
   тысяч)r   r   r   )   тысяче   тысячамr   )u   тысячуr   r   )u   тысячей   тысячамиr   )r      тысячахr   c                    rm   )c                    s   g | ]} fd d|D qS )c                    rn   r"   r"   rS   ro   r"   r#   rQ      rp   z <dictcomp>.<listcomp>.<listcomp>r"   rU   ro   r"   r#   rQ      s    rq   )THOUSANDS_POSTFIXESrs   r"   ro   r#   rZ      s    c                 C   s   t |  t|  S r   )	THOUSANDSr%   )r    r*   r"   r"   r#   get_thousands_elements   s   r   u   тысячнc                 C   rt   )u   нr"   r[   r"   r"   r#   rZ      ru   c                	   @   s   e Zd Zddddddddd	Zd
d ZeeeefddZ	dd Z
dd ZeeeefddZdd Zdd ZddeeeefddZdd Zdd Zd d! Zd"S )#Num2Word_RU))u
   рубльu
   рубляu   рублейu   копейкаu   копейкиu   копеек))   евроr   r   u   центu
   центаu   центов))u   долларu   доллараu   долларовr   ))u   гривнаu   гривныu   гривенr   ))
   тенгеr   r   )u   тиынu
   тиынаu   тиынов))u!   белорусский рубльu!   белорусских рубляu#   белорусских рублейr   ))u   сумu   сумаu
   сумов)u
   тийинu   тийинаu   тийинов))u   польский злотыйu   польских слотыхu   польских злотых)u   грошu
   грошаu   грошей)RUBEURUSDUAHKZTBYNUZSPLNc                 C   s   d| _ d| _tdd| _d S )Nu
   минус)u
   целая
   целыхr   u   целr   )negword	pointwordrW   pointword_ord)selfr"   r"   r#   setup  s   zNum2Word_RU.setupc           
      C   s   t |dd}d|v r7|d\}}| jt|ddd}	d| jt|ddd| t|| j|	| |f S | jt|d||||dS )N,.Tr   cardinalr+   z%s %s %s %sr   r*   r   r+   r,   )r'   replacesplit	_int2wordr\   	pluralizer   _Num2Word_RU__decimal_bitness)
r   numberr*   r   r+   r,   r   leftrightdecimal_partr"   r"   r#   to_cardinal  s    zNum2Word_RU.to_cardinalc                 C   sN   |d dkr|dd  dkr| j dt| dddS | j dt| dd	d
dS )N111r   Fr   r   r   T)r   r*   r   )r   len)r   r   r"   r"   r#   __decimal_bitness+  s
   zNum2Word_RU.__decimal_bitnessc                 C   sD   |d dv r
|d S |d dkr|d S |d dv r|d S |d S )Nd   )            r   r   r   r   )r   r   r   r"   )r   r   formsr"   r"   r#   r   1  s   zNum2Word_RU.pluralizec                 C   s4   |  | t|dd}| jt|d||||dS )Nr   r   Fr   )verify_ordinalr'   r   r   r\   )r   r   r*   r   r+   r,   r   r"   r"   r#   
to_ordinal:  s
   
zNum2Word_RU.to_ordinalc                 C   s$   |dkr| j |ddS | j |ddS )Nr   r   r+   r	   r   r   r   currencyr"   r"   r#   _money_verboseA     zNum2Word_RU._money_verbosec                 C   s$   |dv r| j |ddS | j |ddS )N)r   r   r   r   r   r	   r   r   r"   r"   r#   _cents_verboseF  r   zNum2Word_RU._cents_verboseFTc              	   C   s  |rd}||||d}|dk r"d | j| jt|fd|i|gS |dkr:|r1ttdfi |S ttdfi |S g }	ttt	|d}
|
d dk}t
|
}|d td	d
 t|
D  }|
D ]}g }|d8 }|dkrmq`t|\}}}|r|| j||||fi | |dkr|| |t|| nS|r||ks|| j||||fi | |dkr||kr|nd}|| |t|| n%|| j||||fi | |dkr|tt|fi | d |g}|	| q`d |	S )a7  
        n: number
        feminine: not used - for backward compatibility
        cardinal:True - cardinal
                False - ordinal
        case:   'n' - nominative
                'g' - genitive
                'd' - dative
                'a' - accusative
                'i' - instrumental
                'p' - prepositional
        plural: True - plural
                False - singular
        gender: 'f' - masculine
                'm' - feminine
                'n' - neuter
        animate: True - animate
                 False - inanimate
        r   )r*   r   r+   r,   r    r   r   r   r   c                 S   s   g | ]
\}}|d kr|qS )r   r"   )rM   r   er"   r"   r#   rQ   u  s    z)Num2Word_RU._int2word.<locals>.<listcomp>r   r   )joinr   r   absr$   ONESONES_ORDrR   r   r'   r   max	enumerater   extend_Num2Word_RU__chunk_cardianlappendr   r   _Num2Word_RU__chunk_ordinal _Num2Word_RU__chunk_ordinal_joinTHOUSANDS_ORD)r   r   r   r   r*   r   r+   r,   r!   wordschunksord_joinr   rightest_nonzero_chunk_ixchunk_wordsn1n2n3t_caser"   r"   r#   r   K  sr   

zNum2Word_RU._int2wordc           	      K   s   g }|dkr| tt|fi | |dkr"| tt|fi | |dkr4| tt|fi | |S |dkrj|dkrFtt|fi |}n|dkr\| }d|d< tt|fi |}n	tt|fi |}| | |S )Nr   r   r   r+   )r   r$   HUNDREDSTWENTIESTENSr   copy)	r   hundredstensones	chunk_numr!   r   w_onesf_kwargsr"   r"   r#   __chunk_cardianl  s$   
zNum2Word_RU.__chunk_cardianlc                 K   s"  g }|dkr#|dkr|dkr| tt|fi | n| tt| |dkr@|dkr8| tt|fi | n| tt| |dkrR| tt|fi | |S |dkr|dkrdtt|fi |}n$|dkrw|dkrw|dkrw|dkrwd }n|dkrtt|dd}ntt|}|r| | |S )Nr   r   r   r   )	r   r$   HUNDREDS_ORDr   TWENTIES_ORDr   TENS_ORDr   r   r   r   r   r   r   r!   r   r   r"   r"   r#   __chunk_ordinal  s.    

zNum2Word_RU.__chunk_ordinalc                 K   s  g }|dkr| tt|dd n|dkr| tt| |dkr*| tt| n|dkr8| tt|dd |dkrH| tt|dd |S |dkr|dkrZtt|fi |}n&|dkry|dkry|dkry|dkrq|dkrqd }nttddd}ntt|dd}|r| | |S )Nr   r   )r*   rF   r   r   r   )r   r$   r   r   r   r   r   r   r"   r"   r#   __chunk_ordinal_join  s.   
z Num2Word_RU.__chunk_ordinal_joinN)__name__
__module____qualname__CURRENCY_FORMSr   D_CASED_PLURALD_GENDER	D_ANIMATEr   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r      s6    
	

S!r   N)+
__future__r   baser   utilsr   r   r(   r%   r  r  r  r  r$   r   r   ONES_ORD_PREFIXESONES_ORD_POSTFIXES_GROUPSrV   rW   r_   r   updateTENS_PREFIXESrr   r   r]   TENS_ORD_PREFIXESr   r   TWENTIES_ORD_PREFIXESTWENTIES_ORD_POSTFIXES_GROUPSr   r   HUNDREDS_ORD_PREFIXESr   THOUSANDS_PREFIXESr   r   r   THOUSANDS_ORD_PREFIXESr   r   r"   r"   r"   r#   <module>   sp  	

!








