§
    ŒŸj.	  ã                  ó¬   — 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     úg/var/www/finuniver-perm.ru/html/student/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   € õ
 �$‰xŒxˆ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@   ø€ ðØœ U¨6¤]Ð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   € Ø"ˆŒÝ!‘m”mˆŒˆˆr   r   r   r   c                ób   — |                       ¦   «         p| j        }|                     |¦  «        S r'   )r1   r4   r   )r   r   Úlexers      r   r   zDynamicLexer.lex_documentO   s,   € Ø—’Ñ Ô Ð/ D¤KˆØ×!Ò! (Ñ+Ô+Ð+r   r   c                óV   — |                       ¦   «         p| j        }t          |¦  «        S r'   )r1   r4   r   )r   r6   s     r   r   zDynamicLexer.invalidation_hashS   s$   € Ø—’Ñ Ô Ð/ D¤KˆÝ�%‰yŒyÐ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   