î
\á[\è  ã               @   sW   d  Z  d d l m Z d d l m Z i d d 6d d 6Z Gd d	 „  d	 e j ƒ Z d
 S)z¢Fixer for unicode.

* Changes unicode to str and unichr to chr.

* If "...\u..." is not unicode literal change it into "...\\u...".

* Change u"..." into "...".

é   )Útoken)Ú
fixer_baseÚchrZunichrÚstrZunicodec                   s:   e  Z d  Z d Z d Z ‡  f d d †  Z d d „  Z ‡  S)Ú
FixUnicodeTzSTRING | 'unicode' | 'unichr'c                s/   t  t |  ƒ j | | ƒ d | j k |  _ d  S)NÚunicode_literals)Úsuperr   Ú
start_treeZfuture_featuresr   )ÚselfZtreeÚfilename)Ú	__class__© ú//usr/lib/python3.4/lib2to3/fixes/fix_unicode.pyr	      s    zFixUnicode.start_treec             C   sî   | j  t j k r2 | j ƒ  } t | j | _ | S| j  t j k rê | j } |  j r› | d d k r› d | k r› d j d d „  | j	 d ƒ Dƒ ƒ } n  | d d k r¾ | d d  … } n  | | j k rÑ | S| j ƒ  } | | _ | Sd  S)	Né    z'"ú\z\\c             S   s.   g  |  ]$ } | j  d  d ƒ j  d d ƒ ‘ q S)z\uz\\uz\Uz\\U)Úreplace)Ú.0Úvr   r   r   ú
<listcomp>!   s   	z(FixUnicode.transform.<locals>.<listcomp>ZuUé   )
Útyper   ÚNAMEZcloneÚ_mappingÚvalueÚSTRINGr   ÚjoinÚsplit)r
   ZnodeZresultsÚnewÚvalr   r   r   Ú	transform   s"    	&		zFixUnicode.transform)Ú__name__Ú
__module__Ú__qualname__ZBM_compatibleZPATTERNr	   r   r   r   )r   r   r      s   r   N)Ú__doc__Zpgen2r   Ú r   r   ZBaseFixr   r   r   r   r   Ú<module>	   s   