3
Ÿ(ƒh÷  ã               @   sö   d Z ddlZddlZi Zded< ded< ded< d	ed
< ded< ded< dd„ eddƒD ƒZxejƒ D ]\ZZeee< qfW dd„ eddƒD ƒdd„ eddƒD ƒ dd„ eddƒD ƒ Z	xejƒ D ]\ZZee	e< qÀW [[dd„ Z
ejdƒZdd„ ZdS )zEncoding related utilities.é    Nz\té	   z\né
   z\ré   z\"é"   z\'é'   z\\é\   c             C   s   g | ]}t |ƒ‘qS © )Úchr)Ú.0Úir   r   úC/tmp/pip-install-q3hcpn_q/protobuf/google/protobuf/text_encoding.pyú
<listcomp>-   s    r   é   c             C   s   g | ]}d | ‘qS )z\%03or   )r
   r   r   r   r   r   2   s    é    c             C   s   g | ]}t |ƒ‘qS r   )r	   )r
   r   r   r   r   r   3   s    é   c             C   s   g | ]}d | ‘qS )z\%03or   )r
   r   r   r   r   r   4   s    c                sl   t jr4t| tƒ}|r"|r"| jtƒS |r*tndd„ ‰ nt‰ |rTdj‡ fdd„| D ƒƒS dj‡ fdd„| D ƒƒS )am  Escape a bytes string for use in an text protocol buffer.

  Args:
    text: A byte string to be escaped.
    as_utf8: Specifies if result may contain non-ASCII characters.
        In Python 3 this allows unescaped non-ASCII Unicode characters.
        In Python 2 the return value will be valid UTF-8 rather than only ASCII.
  Returns:
    Escaped string (str).
  c             S   s   | S )Nr   )Úxr   r   r   Ú<lambda>P   s    zCEscape.<locals>.<lambda>Ú c             3   s   | ]}t ˆ |ƒ V  qd S )N)Ú_cescape_unicode_to_str)r
   Úc)Úord_r   r   ú	<genexpr>T   s    zCEscape.<locals>.<genexpr>c             3   s   | ]}t ˆ |ƒ V  qd S )N)Ú_cescape_byte_to_str)r
   r   )r   r   r   r   U   s    )ÚsixÚPY3Ú
isinstanceÚstrÚ	translateÚ_cescape_chr_to_symbol_mapÚordÚjoin)ÚtextZas_utf8Ztext_is_unicoder   )r   r   ÚCEscape:   s    

r"   z"(\\+)x([0-9a-fA-F])(?![0-9a-fA-F])c             C   s:   dd„ }t j|| ƒ}tjr$|jdƒS |jdƒjdƒjdƒS )z”Unescape a text string with C-style escape sequences to UTF-8 bytes.

  Args:
    text: The data to parse in a str.
  Returns:
    A byte string.
  c             S   s4   t | jdƒƒd@ r*| jdƒd | jdƒ S | jdƒS )Né   Zx0é   r   )ÚlenÚgroup)Úmr   r   r   Ú
ReplaceHexe   s    zCUnescape.<locals>.ReplaceHexZstring_escapezutf-8Zunicode_escapeZraw_unicode_escape)Ú_CUNESCAPE_HEXÚsubr   ÚPY2ÚdecodeÚencode)r!   r(   Úresultr   r   r   Ú	CUnescape[   s    
	

r/   )Ú__doc__Úrer   r   Úranger   ÚitemsZbyteÚstringr   r"   Úcompiler)   r/   r   r   r   r   Ú<module>   s(   &
