o
    �õ±j  ã                   @  sR   d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 dgZ
G dd„ deƒZd	S )
z#
Validator for a regular language.
é    )Úannotations)ÚDocument)ÚValidationErrorÚ	Validatoré   )Ú_CompiledGrammarÚGrammarValidatorc                   @  s$   e Zd ZdZddd	„Zddd„ZdS )r   aZ  
    Validator which can be used for validation according to variables in
    the grammar. Each variable can have its own validator.

    :param compiled_grammar: `GrammarCompleter` instance.
    :param validators: `dict` mapping variable names of the grammar to the
                       `Validator` instances to be used for each variable.
    Úcompiled_grammarr   Ú
validatorsúdict[str, Validator]ÚreturnÚNonec                 C  s   || _ || _d S )N)r	   r
   )Úselfr	   r
   © r   ú¦/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/prompt_toolkit/contrib/regular_languages/validation.pyÚ__init__   s   
zGrammarValidator.__init__Údocumentr   c                 C  s¨   | j  |j¡}|rK| ¡ D ];}| j |j¡}|rH| j  |j|j¡}t	|t
|ƒƒ}z| |¡ W q tyG } zt|j|j |jd�|‚d }~ww qd S tt
|jƒdd�‚)N)Úcursor_positionÚmessagezInvalid command)r	   ÚmatchÚtextÚ	variablesr
   ÚgetÚvarnameÚunescapeÚvaluer   ÚlenÚvalidater   Ústartr   r   )r   r   ÚmÚvÚ	validatorÚunwrapped_textÚinner_documentÚer   r   r   r   !   s.   
þý€ÿ÷ý
ÿzGrammarValidator.validateN)r	   r   r
   r   r   r   )r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r      s    
	N)r(   Ú
__future__r   Úprompt_toolkit.documentr   Úprompt_toolkit.validationr   r   Úcompilerr   Ú__all__r   r   r   r   r   Ú<module>   s    ÿ