
C.gc           @   s  d  d l  m Z d| Z d} Z d~ Z 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 f Z i dN dO 6dP dQ 6dR dS 6dT dU 6dV dW 6i dX dO 6dY dQ 6dZ dS 6d[ dU 6dV dW 6i d\ dO 6d] dQ 6d^ dS 6d_ dU 6d` dW 6i da dO 6db dQ 6dc dS 6dd dU 6de dW 6df dg 6dh di 6i dj dO 6dk dQ 6dl dS 6dm dU 6dV dW 6i dn dO 6do dQ 6dp dS 6dq dU 6dr dW 6i ds dO 6dt dQ 6du dS 6dv dU 6dw dW 6f Z dx   Z dy   Z d{ dz  Z
 d{ S(   i(   t   ifiltert    s   UN s   DOS s   TRES s   CUATRO s   CINCO s   SEIS s   SIETE s   OCHO s   NUEVE s   DIEZ s   ONCE s   DOCE s   TRECE s   CATORCE s   QUINCE s
   DIECISEIS s   DIECISIETE s
   DIECIOCHO s   DIECINUEVE s   VEINTE t   VENTIs   TREINTA s	   CUARENTA s
   CINCUENTA s   SESENTA s   SETENTA s   OCHENTA s   NOVENTA s   CIEN s   CIENTO s   DOSCIENTOS s   TRESCIENTOS s   CUATROCIENTOS s   QUINIENTOS s   SEISCIENTOS s   SETECIENTOS s   OCHOCIENTOS s   NOVECIENTOS s   MIL s   MILLON s	   MILLONES s   MIL MILLONES s   BILLON s	   BILLONES s   MIL BILLONES s   TRILLON s
   TRILLONES s   MIL TRILLONESt
   CUATRILLONt   CUATRILLONESs   MIL CUATRILLONESt
   QUINTILLONt   QUINTILLONESs   MIL QUINTILLONESt	   SEXTILLONt   SEXTILLONESs   MIL SEXTILLONESt	   SEPTILLONt   SEPTILLONESs   MIL SEPTILLONESt   OCTILLONt
   OCTILLONESs   MIL OCTILLONESt   NONILLONt
   NONILLONESs   MIL NONILLONESt   DECILLONt
   DECILLONESs   MIL DECILLONESt
   UNDECILLONt   UNDECILLONESs   MIL UNDECILLONESt   DUODECILLONt   DUODECILLONESs   MIL DUODECILLONESu	   Argentinat   countryt   ARGt   currencyu   PESOt   singularu   PESOSt   pluralu   $t   symbolu   Colombiat   COPu   PESO COLOMBIANOu   PESOS COLOMBIANOSu   Estados Unidost   USDu   DÓLARu   DÓLARESu   US$u   Europat   EURu   EUROu   EUROSu   €u   Céntimot   decimalsingularu	   Céntimost   decimalpluralu   Méxicot   MXNu   PESO MEXICANOu   PESOS MEXICANOSu   Perút   PENu	   NUEVO SOLu   NUEVOS SOLESu   S/.u   Reino Unidot   GBPu   LIBRAu   LIBRASu   £c         C   s   d } d |  k  o d k  n s& d St  |   j d  } | d } | r | d k rd | d 7} q t |  d k r | d	 t |  7} q n  | j   j   S(
   s?  Converts a positive number less than a thousand (1000) to words in Spanish

    Args:
        number (int): A positive number less than 1000
    Returns:
        A string in Spanish with first letters capitalized representing the number in letters

    Examples:
        >>> to_word(123)
        'Ciento Ventitres'
    R   i    i  s*   No es posible convertir el numero a letrasi	   i   t   001s   UN s   %s (   t   strt   zfillt   intt   __convert_groupt   titlet   strip(   t   numbert	   convertedt
   number_strt   cientos(    (    s6   /home/diego/Proyectos/RHS_Reservas/number_to_letter.pyt   hundreds_worda   s    
c         C   s   d } |  d k r d } n+ |  d d k rF t  t |  d  d } n  t |  d  } | d k rs | t | 7} n | d k |  d	 d k @r | d
 t t |  d  d	 t t |  d	  f 7} n4 | d t t |  d  d	 t t |  d	  f 7} | S(   s'   Turn each group of numbers into lettersR   t   100s   CIEN i    t   0i   i   i   i   s   %sY %ss   %s%s(   t   CENTENASR&   t   UNIDADESt   DECENAS(   t   nt   outputt   k(    (    s6   /home/diego/Proyectos/RHS_Reservas/number_to_letter.pyR'      s    	74c            s0    d k r y t   f d   t  j   } t |   d k rL | d } nL | d } t t |   t |   d  t d  k r | d } n
 | d } Wq d	 SXn d
 } d
 } g  } g  } d j t |  d   j d  } | d j d  } | d j d  } x t	 |  D]z \ }	 }
 t |
  d k rt
 t |
   } t t |  |	 d t |
  d k rpd n d } | j | | g  qqWx t	 |  D]z \ }	 }
 t |
  d k rt
 t |
   } t t |  |	 d t |
  d k rd n d } | j | | g  qqWx t	 |  D]x \ }	 } yX | |	 d j | |	 d d  r| |	 d j | |	 d d d
  | |	 d <n  Wq)t k
 rq)Xq)Wg  | D] } | D] } | ^ qq} | j |  x t	 |  D]x \ }	 } yX | |	 d j | |	 d d  rH| |	 d j | |	 d d d
  | |	 d <n  Wqt k
 r\qXqWg  | D] } | D] } | ^ qrqh} | j |  d j |  j d d  j   j   } | d t d  !d k rd | t d  } n  | d g k r,| d d j |  j d d  j   j   } n  | S(   s  Converts a positive number less than:
    (999999999999999999999999999999999999999999999999999999999999999999999999)
    to words in Spanish

    Args:
        number (int): A positive number less than specified above
        mi_moneda(str,optional): A string in ISO 4217 short format
    Returns:
        A string in Spanish with first letters capitalized representing the number in letters

    Examples:
        >>> number_words(53625999567)
        'Cincuenta Y Tres Mil Seiscientos Venticinco Millones Novecientos Noventa Y Nueve Mil Quinientos Sesenta Y Siete'
    
        >>>> number_words(1481.01, 'EUR')
        'Mil Cuatrocientos Ochenta Y Un Euros con Un Céntimo'
    c            s   |  d   k S(   NR   (    (   t   x(   t	   mi_moneda(    s6   /home/diego/Proyectos/RHS_Reservas/number_to_letter.pyt   <lambda>   R   i   R   R   i   g{Gz?R   R   s   Tipo de moneda inválidaR   s   {:,.2f}t   .i    t   ,t    s     s   un mils   Un Milt   Milt   00s    con N(   t   NoneR    t   MONEDASt   nextR&   t   roundt   floatt   formatt   splitt	   enumerateR.   t   UNITSt   lent   appendt   findt   replacet
   IndexErrort   joinR(   R)   (   R*   R8   t   monedat   enterot   fracciont   human_readablet   human_readable_decimalst   num_decimalst	   num_unitst   iR4   t   wordst   unitst   itemt   sublistt   sentence(    (   R8   s6   /home/diego/Proyectos/RHS_Reservas/number_to_letter.pyt   to_word   sd    
+!44#5&#5&'2N(   R   s   UN s   DOS s   TRES s   CUATRO s   CINCO s   SEIS s   SIETE s   OCHO s   NUEVE s   DIEZ s   ONCE s   DOCE s   TRECE s   CATORCE s   QUINCE s
   DIECISEIS s   DIECISIETE s
   DIECIOCHO s   DIECINUEVE s   VEINTE (	   R   s   TREINTA s	   CUARENTA s
   CINCUENTA s   SESENTA s   SETENTA s   OCHENTA s   NOVENTA s   CIEN (	   s   CIENTO s   DOSCIENTOS s   TRESCIENTOS s   CUATROCIENTOS s   QUINIENTOS s   SEISCIENTOS s   SETECIENTOS s   OCHOCIENTOS s   NOVECIENTOS (   R   R   (   s   MIL s   MIL (   s   MILLON s	   MILLONES (   s   MIL MILLONES s   MIL MILLONES (   s   BILLON s	   BILLONES (   s   MIL BILLONES s   MIL BILLONES (   s   TRILLON s
   TRILLONES (   s   MIL TRILLONESs   MIL TRILLONES(   R   R   (   s   MIL CUATRILLONESs   MIL CUATRILLONES(   R   R   (   s   MIL QUINTILLONESs   MIL QUINTILLONES(   R   R   (   s   MIL SEXTILLONESs   MIL SEXTILLONES(   R	   R
   (   s   MIL SEPTILLONESs   MIL SEPTILLONES(   R   R   (   s   MIL OCTILLONESs   MIL OCTILLONES(   R   R   (   s   MIL NONILLONESs   MIL NONILLONES(   R   R   (   s   MIL DECILLONESs   MIL DECILLONES(   R   R   (   s   MIL UNDECILLONESs   MIL UNDECILLONES(   R   R   (   s   MIL DUODECILLONESs   MIL DUODECILLONES(   t	   itertoolsR    R2   R3   R1   RG   R@   R.   R'   R?   R[   (    (    (    s6   /home/diego/Proyectos/RHS_Reservas/number_to_letter.pyt   <module>   s                                       	&&&4&&,		