o
    phH                     @   sx   d dl Z d dlZd dlZd dl mZ d dlmZ ddlmZ ddgZdd	gZd
dgZ	d
dgZ
g dZG dd deZdS )    N)Decimal)floor   )Num2Word_Base)u   ريالu   ريالانu   ريالاتu   ريالاً)   هللةu   هللتانu
   هللاتr   )u   جنيهu   جنيهانu   جنيهاتu   جنيهاً)   قرشu
   قرشانu   قروشr   )u
   دينارu   دينارانu   ديناراتu   ديناراً)   فلسu
   فلسانr   r   )u   مليماًu   ميلمانu   مليماتu   مليم) u   واحدu
   اثنانu
   ثلاثةu
   أربعةu   خمسةu   ستةu   سبعةu   ثمانيةu   تسعةu   عشرةu   أحد عشرu   اثنا عشرu   ثلاثة عشرu   أربعة عشرu   خمسة عشرu   ستة عشرu   سبعة عشرu   ثمانية عشرu   تسعة عشرc                       s   e Zd ZdZdd Z fddZdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zd(ddZd)d d!Zd"d# Zd$d% Zd&d' Z  ZS )*Num2Word_ARzabs(%s) must be less than %s.
   3   c                    s   t    d| _d| _d| _d| _d| _d| _td | _	td | _
d| _d| _d| _t| _g d| _g d	| _g d
| _g d| _g d| _g d| _g d| _g d| _g d| _t| jt| jksfJ t| jt| jksrJ t| jt| jks~J d S )Nr   r	      r   TF   و)r	   u   إحدىu   اثنتانu   ثلاثu   أربعu   خمسu   ستu   سبعu   ثمانu   تسعu   عشرu   إحدى عشرةu   اثنتا عشرةu   ثلاث عشرةu   أربع عشرةu   خمس عشرةu   ست عشرةu   سبع عشرةu   ثماني عشرةu   تسع عشرة)r	   u   اولu   ثانيu   ثالثu   رابعu   خامسu   سادسu   سابعu   ثامنu   تاسعu   عاشرu   حادي عشرu   ثاني عشرu   ثالث عشرu   رابع عشرu   خامس عشرu   سادس عشرu   سابع عشرu   ثامن عشرu   تاسع عشر)u
   عشرونu   ثلاثونu   أربعونu
   خمسونu   ستونu
   سبعونu   ثمانونu
   تسعون)
r	      مائة
   مئتانu   ثلاثمائةu   أربعمائةu   خمسمائةu   ستمائةu   سبعمائةu   ثمانمائةu   تسعمائة)u   مئتاu   ألفاu   مليوناu   ملياراu   تريليوناu   كوادريليوناu   كوينتليوناu   سكستيليوناu   سبتيليوناu   أوكتيليونا u   نونيليوناu   ديسيليوناu   أندسيليوناu   دوديسيليوناu   تريديسيليوناu   كوادريسيليوناu   كوينتينيليونا)r   u
   ألفانu   مليونانu   مليارانu   تريليونانu   كوادريليونانu   كوينتليونانu   سكستيليونانu   سبتيليونانu   أوكتيليونان u   نونيليونان u   ديسيليونانu   أندسيليونانu   دوديسيليونانu   تريديسيليونانu   كوادريسيليونانu   كوينتينيليونان)r   u   ألفu
   مليونu
   مليارu   تريليونu   كوادريليونu   كوينتليونu   سكستيليونu   سبتيليونu   أوكتيليونu   نونيليونu   ديسيليونu   أندسيليونu   دوديسيليونu   تريديسيليونu   كوادريسيليونu   كوينتينيليون)r	   u
   ألفاًu   مليوناًu   ملياراًu   تريليوناًu   كوادريليوناًu   كوينتليوناًu   سكستيليوناًu   سبتيليوناًu   أوكتيليوناًu   نونيليوناًu   ديسيليوناًu   أندسيليوناًu   دوديسيليوناًu   تريديسيليوناًu   كوادريسيليوناًu   كوينتينيليوناً)r	   u   آلافu   ملايينu   ملياراتu   تريليوناتu   كوادريليوناتu   كوينتليوناتu   سكستيليوناتu   سبتيليوناتu   أوكتيليوناتu   نونيليوناتu   ديسيليوناتu   أندسيليوناتu   دوديسيليوناتu   تريديسيليوناتu   كوادريسيليوناتu   كوينتينيليونات)super__init__numberarabicPrefixTextarabicSuffixTextinteger_value_decimalValuepartPrecisionCURRENCY_SRcurrency_unitcurrency_subunitisCurrencyPartNameFeminineisCurrencyNameFeminine	separatorARABIC_ONES
arabicOnesarabicFeminineOnesarabicOrdinal
arabicTensarabicHundredsarabicAppendedTwos
arabicTwosarabicGrouparabicAppendedGrouparabicPluralGroupslen)self	__class__ ]/var/www/html/Testing_prj/Navya-Bakers/venv/lib/python3.10/site-packages/num2words/lang_AR.pyr   2   s2   











zNum2Word_AR.__init__c                 C   s   || _ || _|   d S N)r   r   !extract_integer_and_decimal_parts)r+   arabic_prefix_textarabic_suffix_textr.   r.   r/   number_to_arabicy   s   zNum2Word_AR.number_to_arabicc                 C   sN   t dt| j}t|d | _t|dkr"t| |d | _d S d| _d S )Nz\.r   r   )	resplitstrr   intr   r*   decimal_valuer   )r+   splitsr.   r.   r/   r1   ~   s
   
z-Num2Word_AR.extract_integer_and_decimal_partsc                 C   sr   | j t|ur5t|}|}td| j | D ]}|d7 }q|}t|| j kr*t|}n| j }|d| }|S |}|S )Nr   0)r   r*   range)r+   decimal_partdecimal_part_lengthdecimal_part_builderidecresultr.   r.   r/   r9      s   

zNum2Word_AR.decimal_valuec                 C   sb   |dkr| j r| jt| S | jt| S |dkr*| jr#| jt| S | jt| S | jt| S )Nr   )r   r!   r8   r    r   )r+   digitgroup_levelr.   r.   r/   digit_feminine_status   s   z!Num2Word_AR.digit_feminine_statusc           	      C   s*  t |t d }t |t d }d}t|dkrA|dkr+t|dkr+d| jd }nd| jt| }|dkrA|dkrA|d7 }|dkr|dk rt|t| jk sUJ |dkrt|dkr|dkrtt| j	}| j	dkr|d	 dkr| j	dd|  krd| jt| }|S d| jt| }|S |d
kr|dkr|dkr|d7 }|S |d
ks|dkr|dks|dkr|dkr|dkr|d7 }|S |d
kr|dkr|| j
t| 7 }|S || t||7 }|S |d }|d d }|dkr|| ||7 }|dkr
|dkr
|d7 }|| jt| 7 }|S )Nd   r	   r   r   {}u    و    r      r   rC   )r   r8   formatr%   r$   r*   r&   mathlog10r   r'   rF   r#   )	r+   group_numberrE   remaining_numbertenshundredsret_valpowonesr.   r.   r/   process_arabic_group   s^   
z Num2Word_AR.process_arabic_groupc                 C   s   |dkr|S | S )Nr   r.   r+   r   r.   r.   r/   abs   s   zNum2Word_AR.absc                 C   sD   t |}||krt|S t|| d }t|d d|d S )Ni ʚ;.z{:09d}r;   )r8   r7   roundrK   rstrip)r+   r   integerdecimalr.   r.   r/   to_str   s
   zNum2Word_AR.to_strc                 C   s$   |  || _| | j| j |  S r0   )r]   r   r4   r   r   convert_to_arabicr+   valuer.   r.   r/   convert   s   zNum2Word_AR.convertc           
      C   s  t | j}|t dkrdS | | jdt d}d}d}|t dkrt t|}zt|t td }W n tjyQ   t|	 j
t _t|t td }Y nw t|t d }| ||t t|}|dkr|dkr|dkrwdd|}|dkr|dkr|t| jk sJ |d	 dkrd
|  krdkrn n
d| j| |}n!|dkrd| j| |}nd| j| |}n	d| j| |}d||}|d7 }|t dks!d}| jdkr|d| j7 }||7 }| jdkrUt| jd	 }	|	dkr|| jd 7 }nS|	dkr|| jd 7 }nF|	dkr*| jdkr"|| jd 7 }n3|| jd 7 }n+d
|	  kr6dkr@n n|| jd 7 }nd|	  krLdkrUn n|| jd
 7 }| jdkrg|d| j7 }||7 }| jdkr|d7 }t| jd	 }	|	dkr|| jd 7 }nE|	dkr|| jd 7 }n8|	dkr|| jd 7 }n+d
|	  krdkrn n|| jd 7 }nd|	  krdkrn n|| jd
 7 }| jdkr|d| j7 }|S )Nr   u   صفرrC   r	   i  u   {}و {}r   r   rG   rJ   r   z{} {}z{}    c   z {}  z {})r   r   rU   r   r7   r8   r\   InvalidOperationr*   as_tupledigits
getcontextprecr   rK   r'   r)   r(   r   r   r   r   r   r   )
r+   temp_numberdecimal_stringrR   grouptemp_number_decnumber_to_processgroup_descriptionformatted_numberremaining100r.   r.   r/   r^      s   




-






zNum2Word_AR.convert_to_arabicc                 C   s"   || j krt| j|| j f |S r0   )MAXVALOverflowErrorerrmsg_toobigrV   r.   r.   r/   validate_number_  s   
zNum2Word_AR.validate_numberc                 C   s   |dkrt d | _t d | _d| _d S |dkr&td | _td | _d| _d S |dkr9td | _td | _d| _d S td | _td | _d| _d S )NTNDr   r   rJ   EGPr   KWD)CURRENCY_TNDr   r   r   CURRENCY_EGPCURRENCY_KWDr   )r+   currencyr.   r.   r/   set_currency_preferd  s   











zNum2Word_AR.set_currency_preferSRr	   c                 C   s4   |  | d| _d| _t| _|| _|| _| j|dS )NFr   r`   )r}   r   r   r   r    r   r   ra   )r+   r`   r|   prefixsuffixr.   r.   r/   to_currencyv  s   
zNum2Word_AR.to_currencyc                 C   s`   |dkrd | j| S |dk rd| _nd| _d| _d| _|| _d| _d | | |	 S )N   rH   rG   TFr	   r	   r	   r	   r	   )
rK   r"   r   r   r   r   r   ra   rW   strip)r+   r   r   r.   r.   r/   
to_ordinal  s   zNum2Word_AR.to_ordinalc                 C   s   |  |}| |S r0   )ru   to_cardinalr_   r.   r.   r/   to_year  s   

zNum2Word_AR.to_yearc                 C   s   |  | S r0   )r   r   r_   r.   r.   r/   to_ordinal_num  s   zNum2Word_AR.to_ordinal_numc                 C   s^   d| _ | |}d}|dk rd}d| _d| _d| _d| _d| _t| _|| j	| 
|d  S )NFr	   r   u	   سالب ,r   r   )r   ru   r   r   r   r   r   r   r    ra   rW   r   )r+   r   minusr.   r.   r/   r     s   
zNum2Word_AR.to_cardinal)r~   r	   r	   )r	   )__name__
__module____qualname__rt   rr   r   r4   r1   r9   rF   rU   rW   r]   ra   r^   ru   r}   r   r   r   r   r   __classcell__r.   r.   r,   r/   r
   .   s(    G	;e

	r
   )r\   rL   r5   r   r   baser   r   rz   r{   ry   r   r
   r.   r.   r.   r/   <module>   s(   	