
    %i                     (    d dl mZmZ  G d d      Zy)    )print_functionunicode_literalsc                       e Zd Zg dgdgdgdgdgdgdgdgd	gd

ZddddddddddddZdZdZdZddz  Zd Z	d Z
d Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zd& Zd' Zd( Zy))*Num2Word_IDsatuduatigaempatlimaenamtujuhdelapansembilan)
r                           	   ribujutamiliartriliun
kuadriliun
kuantiliun
sekstiliun	septiliunoktiliunnoniliundesiliun)r   r   r                        !   z$Cannot treat float number as ordinalz'Cannot treat negative number as ordinalz7Number is too large to convert to words (abs(%s) > %s).
   $   c                 6    t        |      j                  d      S )N.)strsplitselfnumbers     o/var/www/html/navyabakers_fullstack/navyabakers_prod/venv_new/lib/python3.12/site-packages/num2words/lang_ID.pysplit_by_komazNum2Word_ID.split_by_koma2   s    6{  %%    c                     d}t        |      }|dk  r	||ffz  }|S |dz  }|dkD  r|d| f}||fz  }t        ||d      D ]  }|||dz    ff}||z  } |S )z
        starting here, it groups the number by three from the tail
        '1234567' -> (('1',),('234',),('567',))
        :param number:str
        :rtype:tuple
         r   r   )lenrange)r3   r4   blockslengthlen_of_first_blockfirst_blocki
next_blocks           r5   
split_by_3zNum2Word_ID.split_by_35   s     VA:yl"F  "(!!A%$Q'9:;+,&-vq9 %$Qq1uo/0
*$% r7   c                    d}|d   }t        |d         dk(  r(|d   dk(  rdg}nq| j                  t        |d            }nUt        |d         dk(  r| j                  |d         }n/| j	                  |d   d         | j                  |d   dd       z   }||d   |ffz  }|dd D ]=  }| j	                  |d   d         | j                  |d   dd       z   }||fz  }||fz  }? |S )	z
        it adds the list of spelling to the blocks
        (
        ('1',),('034',)) -> (('1',['satu']),('234',['tiga', 'puluh', 'empat'])
        )
        :param blocks: tuple
        :rtype: tuple
        r9   r   r   0nolr   r   N)r:   BASEintpuluhratus)r3   r<   word_blocksr?   spellingblocks         r5   spellzNum2Word_ID.spellN   s     Qi{1~!#1~$!799SQ%89Q A%zz+a.1H 

;q>!,-

;q>!A;N0OO  	A122ABZ 	"Ezz%(1+.E!HQqM1JJHXYE56!K	"
 r7   c                 X    |dk(  rdgS |dk(  rg S | j                   t        |         dgz   S )N1seratusrD   rI   rF   rG   r2   s     r5   rI   zNum2Word_ID.ratusn   s7    S=;s]I99S[)WI55r7   c                 8   |d   dk(  r5|d   dk(  rdgS |d   dk(  rdgS | j                   t        |d            dgz   S |d   dk(  r| j                   t        |d            S | j                   t        |d            dgz   | j                   t        |d            z   S )	Nr   rO   r   rD   sepuluhsebelasbelasrH   rQ   r2   s     r5   rH   zNum2Word_ID.puluhw   s    !9ayC!{"c!!{"yyVAY0G9<<AY#99S^,, 		#fQi.)WI5))Cq	N+,r7   c                     g }|D ])  }|dk(  r|dgz  }|| j                   t        |         z  }+ dj                  ddg|z         S )NrD   rE     koma)rF   rG   join)r3   
float_part	word_listns       r5   spell_floatzNum2Word_ID.spell_float   s]    	 	+ACxeW$	3q6**I		+
 xxVy011r7   c                    g }t        |      dz
  }|d   f}d}|dk(  r|d   d   dk(  r|dgz  }d}t        ||dz   d      D ]6  }|||   d   z  }||   d   s||k(  r n|| j                  ||z
  dz     gz  }8 dj                  |      |z   S )zw
        join the words by first join lists in the tuple
        :param word_blocks: tuple
        :rtype: str
        r   r   rO   seribur   rW   )r:   r;   TENS_TOrZ   )r3   rJ   r[   r\   r=   r?   startr@   s           r5   rZ   zNum2Word_ID.join   s     	[!A%!!noQ;;q>!,3(#IEufqj!, 	:AQ**Iq>!$F{$,,
a'7899I	: xx	"Z//r7   c           	      b   || j                   k\  r$t        | j                  || j                   fz        d}|dk  rd}d}| j                  t	        |            }t        |      dk(  r| j                  |d         }|| j                  | j                  | j                  |d               |      z   S )NrX   r   zmin r   r   )
MAXVALOverflowErrorerrmsg_toobigr6   absr:   r^   rZ   rM   rB   )r3   r4   minus
float_wordr]   s        r5   to_cardinalzNum2Word_ID.to_cardinal   s    T[[  2 2fdkk5J JKKA:E
s6{+q6Q;))!A$/JtyyDOOAaD,A!BJOOOr7   c                 \    | j                  |       | j                  |      }|dk(  ryd|z   S )Nr   pertamake)verify_ordinalrj   )r3   r4   out_words      r5   
to_ordinalzNum2Word_ID.to_ordinal   s5    F###F+vhr7   c                 @    | j                  |       dt        |      z   S )Nzke-)rn   r0   r2   s     r5   to_ordinal_numzNum2Word_ID.to_ordinal_num   s    F#s6{""r7   c                 *    | j                  |      dz   S )Nz rupiahrj   r3   values     r5   to_currencyzNum2Word_ID.to_currency   s    &22r7   c                 $    | j                  |      S Nrt   ru   s     r5   to_yearzNum2Word_ID.to_year   s    &&r7   c                     |t        |      k(  st        | j                  |z        t        |      |k(  st        | j                  |z        y ry   )rG   	TypeErrorerrmsg_floatordrg   errmsg_negordru   s     r5   rn   zNum2Word_ID.verify_ordinal   sK    E
"D0058995zU"D..677 #r7   N)__name__
__module____qualname__rF   ra   r}   r~   rf   rd   r6   rB   rM   rI   rH   r^   rZ   rj   rp   rr   rw   rz   rn   r9   r7   r5   r   r      s    xwxyxxy{|	D 
G =O=MMM2XF&2@6"202
P#3'8r7   r   N)
__future__r   r   r   r9   r7   r5   <module>r      s   $ 8w8 w8r7   