o
    5tiP                     @   s  d dl m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"i d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBZg dCZ	 	 dDdE Z	 dFdG Z	 dHdI ZdJS )K    )print_functionzeroone   two   three   four   five   six   seven   eight   nine	   ten
   eleven   twelve   thirteen   fourteen   fifteen   sixteen   	seventeen   eighteen   nineteen   twenty   thirty   forty(   fifty2   sixty<   seventyF   eightyP   ninetyZ   hundredd   thousand  million@B billion ʚ;point.)
r   r   r   r   r
   r   r   r   r   r   c                 C   s   g }| D ]	}| t|  qt|dkr$|d |d  |d  |d  S t|dkr6|d |d  |d  S t|dkrPd|v rH|d |d  S |d |d  S |d S )Nr   r   r   r   r	   r;   )appendamerican_number_systemlen)number_wordsnumbersnumber_word rJ   C/home/ubuntu/.local/lib/python3.10/site-packages/word2number/w2n.pynumber_formationZ   s    rL   c                 C   sF   g }| D ]}|t vr dS |t|  qddtt| }t|S )Nr   z0. )decimal_wordsrD   rE   joinmapstrfloat)decimal_digit_wordsdecimal_number_strdec_wordfinal_decimal_stringrJ   rJ   rK   get_decimal_sumr   s   rW   c                 C   sV  t | tur
td| dd} |  } |  rt| S |   }g }g }|D ]}|t	v r3|
| q(t|dkr>td|ddksZ|ddksZ|d	dksZ|d
dkr^td|d
dkry||d
d d  }|d |d
 }d	|v r|d	nd}d|v r|dnd}d|v r|dnd}|dkr||k s||k s|dkr||k rtdd}t|dkrt|dkr|t	|d  7 }n|dkrt|d| }	||	d 7 }|dkr|dkrt||d | }
nt|d| }
||
d 7 }|dkr5|dkrt||d | }n|dkr'|dkr't||d | }nt|d| }||d 7 }|dkrN|t|d krNt||d d  }nH|dkrg|t|d krgt||d d  }n/|dkr|t|d krt||d d  }n|dkr|dkr|dkrt|}nd}||7 }t|dkrt|}||7 }|S )NzvType of input is not string! Please enter a valid number word (eg. 'two million twenty three thousand and forty nine')- r   ztNo valid number words found! Please enter a valid number word (eg. two million twenty three thousand and forty nine)r<   r   r>   r@   rB   znRedundant number word! Please enter a valid number word (eg. two million twenty three thousand and forty nine)ziMalformed number! Please enter a valid number word (eg. two million twenty three thousand and forty nine)rA   r?   r=   )typerQ   
ValueErrorreplacelowerisdigitintstripsplitrE   rD   rF   countindexrL   rW   )number_sentencesplit_wordsclean_numbersclean_decimal_numberswordbillion_indexmillion_indexthousand_index	total_sumbillion_multipliermillion_multiplierthousand_multiplierhundredsdecimal_sumrJ   rJ   rK   word_to_num   st   
8(


rs   N)
__future__r   rE   rN   rL   rW   rs   rJ   rJ   rJ   rK   <module>   s    	
 !$(