
    Mh.	                        d Z ddlmZ ddlmZmZ ddlmZmZ ddl	m
Z
 ddlmZ g dZ G d d	e
          Z G d de          Z G d de          ZdS )z)
Base classes for prompt_toolkit lexers.
    )annotations)ABCMetaabstractmethod)CallableHashable)Document)StyleAndTextTuples)LexerSimpleLexerDynamicLexerc                  2    e Zd ZdZed
d            ZddZd	S )r
   z$
    Base class for all lexers.
    documentr   return#Callable[[int], StyleAndTextTuples]c                    dS )aT  
        Takes a :class:`~prompt_toolkit.document.Document` and returns a
        callable that takes a line number and returns a list of
        ``(style_str, text)`` tuples for that line.

        XXX: Note that in the past, this was supposed to return a list
             of ``(Token, text)`` tuples, just like a Pygments lexer.
        N )selfr   s     Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/prompt_toolkit/lexers/base.pylex_documentzLexer.lex_document   s          r   c                     t          |           S )zz
        When this changes, `lex_document` could give a different output.
        (Only used for `DynamicLexer`.)
        )id)r   s    r   invalidation_hashzLexer.invalidation_hash$   s    
 $xxr   Nr   r   r   r   r   r   )__name__
__module____qualname____doc__r   r   r   r   r   r   r
   r
      sR             ^     r   r
   )	metaclassc                  $    e Zd ZdZdddZddZdS )r   z
    Lexer that doesn't do any tokenizing and returns the whole input as one
    token.

    :param style: The style string for this lexer.
     stylestrr   Nonec                    || _         d S N)r#   )r   r#   s     r   __init__zSimpleLexer.__init__4   s    


r   r   r   r   c                &     |j         d fd}|S )Nlinenointr   r	   c                J    	 j         |          fgS # t          $ r g cY S w xY w)z%Return the tokens for the given line.)r#   
IndexError)r*   linesr   s    r   get_linez*SimpleLexer.lex_document.<locals>.get_line:   s@    U6]344   			s    "")r*   r+   r   r	   )r.   )r   r   r/   r.   s   `  @r   r   zSimpleLexer.lex_document7   s5    	 	 	 	 	 	 	 r   N)r"   )r#   r$   r   r%   r   )r   r   r   r   r(   r   r   r   r   r   r   ,   sK             
 
 
 
 
 
r   r   c                  *    e Zd ZdZddZdd
ZddZdS )r   z
    Lexer class that can dynamically returns any Lexer.

    :param get_lexer: Callable that returns a :class:`.Lexer` instance.
    	get_lexerCallable[[], Lexer | None]r   r%   c                :    || _         t                      | _        d S r'   )r1   r   _dummy)r   r1   s     r   r(   zDynamicLexer.__init__K   s    "!mmr   r   r   r   c                b    |                                  p| j        }|                    |          S r'   )r1   r4   r   )r   r   lexers      r   r   zDynamicLexer.lex_documentO   s,      /DK!!(+++r   r   c                V    |                                  p| j        }t          |          S r'   )r1   r4   r   )r   r6   s     r   r   zDynamicLexer.invalidation_hashS   s$      /DK%yyr   N)r1   r2   r   r%   r   r   )r   r   r   r   r(   r   r   r   r   r   r   r   D   sZ         $ $ $ $, , , ,     r   r   N)r   
__future__r   abcr   r   typingr   r   prompt_toolkit.documentr   "prompt_toolkit.formatted_text.baser	   __all__r
   r   r   r   r   r   <module>r>      s    # " " " " " ' ' ' ' ' ' ' ' % % % % % % % % , , , , , , A A A A A A      g    0    %   0    5     r   