
    BPc                        d Z ddlmZ  ed          Ze                    d           e                    d           e                    d           e                    d           e                    d            ed	  e ee                    D                       Z	d
 Z
 e
g d          Z e
 edd                    Z e
 edd                    Z e
 edd                    Zg dZ G d de          ZdS )zN
Python barcode renderer for Code93 barcodes. Designed for use with Inkscape.
   )Barcodez+0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%($)(/)(+)(%)MARKERc              #   4   K   | ]}t           |         |fV  d S )N)PALLET).0is     0/usr/share/inkscape/extensions/barcode/Code93.py	<genexpr>r       s*      
6
6aF1Iq>
6
6
6
6
6
6    c                 \    i }d}| D ]$}t           |         |t          |          <   |dz  }%|S )z*Extended ENCODE maps for full ASCII Code93
   r   )r
   chr)arrayresultposchars       r   get_mapr   #   s?    F
C  "3Ks4yyqMr   )               ;   <   =   >   ?   [   \   ]   ^   _   {   |   }   ~          @   `   r+   r+   r+      !   :   a   z   )1	100010100	101001000	101000100	101000010	100101000	100100100	100100010	101010000	100010010	100001010	110101000	110100100	110100010	110010100	110010010	110001010	101101000	101100100	101100010	100110100	100011010	101011000	101001100	101000110	100101100	100010110	110110100	110110010	110101100	110100110	110010110	110011010	101101100	101100110	100110110	100111010	100101110	111010100	111010010	111001010	101101110	101110110	110101110	100100110	111011010	111010110	100110010	101011110 c                   D    e Zd ZdZd Zed             Zed             ZdS )Code93zEncode Code93 Barcodec                    t           t                              dd                   }t                              |          }|                    t                              |d                     |                    t                              |d                     |D ]+}|t           t                              |d                   z   },|t           t                              dd                   z   dz   S )Nr         1)ENCODEMAPgetrf   encode_asciiappendchecksum)selftextbitsr   s       r   encodezCode93.encode   s    cggh++, ""4(( 	FOOD"--...FOOD"--...  	4 	4D&r!2!233DD fSWWXr2233c99r   c                     t          |           |z  }d}| D ]"}|t          |         |z  z   }|dz  }|dk    r|}#t          |dz           S )zGenerate a code 93 checksumr,   r   /   )lenrm   r
   )rs   modweightcheckr   s        r   rq   zCode93.checksum   sa     TS 	 	DSY/0EaKF{{ebj!!r   c                 L   g }| D ]}|t           v r|                    |           "|t          v r6|                    d           |                    t          |                    a|t          v r6|                    d           |                    t          |                    |t          v r6|                    d           |                    t          |                    |t
          v r5|                    d           |                    t
          |                    |S )z<Some characters need re-ENCODE into the code93 specificationr   r   r   r   )rm   rp   MAP_AMAP_BMAP_CMAP_D)rs   r   r   s      r   ro   zCode93.encode_ascii   s	     	+ 	+Ds{{d####e$$$eDk****e$$$eDk****e$$$eDk****e$$$eDk***r   N)__name__
__module____qualname____doc__ru   staticmethodrq   ro    r   r   rf   rf      s_        : : :$ " " \"   \  r   rf   N)r   Baser   listr
   rp   dictrangerx   rm   r   r}   r~   r   r   rl   rf   r   r   r   <module>r      s  &       	;	<	< e    e    e    e    h   
d
6
655V#5#5
6
6
666   	  	 	< 	ab"b#2
 2
 2
j6 6 6 6 6W 6 6 6 6 6r   