î
ªÍ X¦  ã               @   s–   d  Z  d Z d Z d Z d Z d Z e d Z Gd d „  d e ƒ Z e e ƒ Z	 e e ƒ Z
 e e ƒ Z e e ƒ Z e e ƒ Z e e d	 d
 ƒZ d S)až  
Convert numbers from base 10 integers to base X strings and back again.

Sample usage::

  >>> base20 = BaseConverter('0123456789abcdefghij')
  >>> base20.encode(1234)
  '31e'
  >>> base20.decode('31e')
  1234
  >>> base20.encode(-1234)
  '-31e'
  >>> base20.decode('-31e')
  -1234
  >>> base11 = BaseConverter('0123456789-', sign='$')
  >>> base11.encode('$1234')
  '$-22'
  >>> base11.decode('$-22')
  '$1234'

Z01Z0123456789ABCDEFZ823456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyzZ$0123456789abcdefghijklmnopqrstuvwxyzZ>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzz-_c               @   sU   e  Z d  Z d Z d d d „ Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z d S)ÚBaseConverterÚ
0123456789ú-c             C   s4   | |  _  | |  _ | |  j k r0 t d ƒ ‚ n  d  S)Nz.Sign character found in converter base digits.)ÚsignÚdigitsÚ
ValueError)Úselfr   r   © r   úC/home/ubuntu/projects/ifolica/build/django/django/utils/baseconv.pyÚ__init__3   s    		zBaseConverter.__init__c             C   s   d t  |  j ƒ |  j f S)Nz<BaseConverter: base%s (%s)>)Úlenr   )r   r   r   r	   Ú__repr__9   s    zBaseConverter.__repr__c             C   s9   |  j  | |  j |  j d ƒ \ } } | r5 |  j | S| S)Nr   )ÚconvertÚdecimal_digitsr   r   )r   ÚiÚnegÚvaluer   r   r	   Úencode<   s    $zBaseConverter.encodec             C   sD   |  j  | |  j |  j |  j ƒ \ } } | r: d | } n  t | ƒ S)Nr   )r   r   r   r   Úint)r   Úsr   r   r   r   r	   ÚdecodeB   s    'zBaseConverter.decodec       	      C   så   t  | ƒ d | k r5 t  | ƒ d d  … } d } n d } d } x1 t  | ƒ D]# } | t | ƒ | j | ƒ } qN W| d k rŽ | d } nM d } xD | d k rÚ | t | ƒ } | | | } t | t | ƒ ƒ } q— W| | f S)Né    é   Ú )Ústrr   Úindexr   )	r   ÚnumberZfrom_digitsZ	to_digitsr   r   ÚxÚdigitÚresr   r   r	   r   H   s    	!zBaseConverter.convertN)	Ú__name__Ú
__module__Ú__qualname__r   r
   r   r   r   r   r   r   r   r	   r   0   s   r   r   ú$N)Ú__doc__ZBASE2_ALPHABETZBASE16_ALPHABETZBASE56_ALPHABETZBASE36_ALPHABETZBASE62_ALPHABETZBASE64_ALPHABETÚobjectr   Zbase2Zbase16Zbase36Zbase56Zbase62Úbase64r   r   r   r	   Ú<module>&   s   
/