o
    Vh
                     @  s&   d dl mZ ddhZG dd dZdS )    )annotations'"c                   @  sV   e Zd ZdZdddZdd	d
ZdddZdddZdddZdddZ	dddZ
dS )TokenParserz;
    Parses tokens from a string passed to StringArgs.
    returnNonec                 C  s   d| _ d| _d | _d | _d S )N r   )_string_cursor_current_next_self r   o/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/cleo/io/inputs/token_parser.py__init__   s   
zTokenParser.__init__stringstr	list[str]c                 C  sB   || _ d| _d | _|r|d | _t|dkr|d nd | _|  S )Nr      )r	   r
   r   lenr   _parse)r   r   r   r   r   parse   s   
zTokenParser.parsec                 C  s>   g }| j d ur| j  r|   q||   | j d us|S )N)r   isspace_nextappend_parse_token)r   tokensr   r   r   r      s   


	zTokenParser._parsec                 C  sX   | j du rdS |  jd7  _| j| _ | jd t| jk r'| j| jd  | _dS d| _dS )z;
        Advances the cursor to the next position.
        Nr   )r   r
   r   r   r	   r   r   r   r   r   +   s   

zTokenParser._nextc                 C  sv   d}| j d ur9| j  r|   	 |S | j dkr||  7 }n| j tv r+||  7 }n	|| j 7 }|   | j d us|S )Nr   \)r   r   r   _parse_escape_sequenceQUOTES_parse_quoted_string)r   tokenr   r   r   r   :   s   






zTokenParser._parse_tokenc                 C  s   d}| j }|   | j d urT| j |kr|   	 |S | j dkr&||  7 }n)| j dkr6|d|   d7 }n| j dkrF|d|   d7 }n	|| j 7 }|   | j d us|S )Nr   r   r   r   )r   r   r   r!   )r   r   	delimiterr   r   r   r!   M   s$   






z TokenParser._parse_quoted_stringc                 C  s>   | j tv r	| j }n| j d usJ d| j  }|   |   |S )Nr   )r   r    r   )r   sequencer   r   r   r   f   s   

z"TokenParser._parse_escape_sequenceN)r   r   )r   r   r   r   )r   r   )r   r   )__name__
__module____qualname____doc__r   r   r   r   r   r!   r   r   r   r   r   r      s    





r   N)
__future__r   r    r   r   r   r   r   <module>   s    