U
    H$xe                     @   s~   d dl Z d dlmZ d dlmZmZ eG dd dZG dd deZG dd	 d	eZG d
d de	Z
eee dddZdS )    N)	dataclass)IteratorTypec                   @   s$   e Zd ZU eed< edddZdS )Tokenvalue)returnc                 C   s   | j j d| j dS )Nz("z"))	__class____name__r   )self r   1lib/python3.8/site-packages/cutadapt/tokenizer.py__repr__
   s    zToken.__repr__N)r	   
__module____qualname__str__annotations__r   r   r   r   r   r      s   
r   c                   @   s   e Zd ZdS )StringTokenNr	   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )
BraceTokenNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )TokenizeErrorNr   r   r   r   r   r      s   r   )sr   c                 c   st   t d| D ]b}|dkrq|dr@|dr@|dd }t}nt}d|krTtdd|krdtd||V  qd	S )
a  
    >>> list(tokenize_braces(""))
    []
    >>> list(tokenize_braces("before {braced} after"))
    [StringToken("before "), BraceToken("braced"), StringToken(" after")]
    >>> list(tokenize_braces("ab{cd}{ef}"))
    [StringToken("ab"), BraceToken("cd"), BraceToken("ef")]
    z	({[^}]*}) {}   zUnexpected '{' encounteredzUnexpected '}' encounteredN)resplit
startswithendswithr   r   r   )r   r   Ztoken_classr   r   r   tokenize_braces   s    	r    )r   Zdataclassesr   typingr   r   r   r   r   	Exceptionr   r   r    r   r   r   r   <module>   s   