ó
    OÎh.	  ã                  ó’   • S r SSKJr  SSKJrJr  SSKJrJr  SSK	J
r
  SSKJr  / SQr " S S	\S
9r " S S\5      r " S S\5      rg)z)
Base classes for prompt_toolkit lexers.
é    )Úannotations)ÚABCMetaÚabstractmethod)ÚCallableÚHashable)ÚDocument)ÚStyleAndTextTuples)ÚLexerÚSimpleLexerÚDynamicLexerc                  ó6   • \ rS rSrSr\SS j5       rSS jrSrg)	r
   é   z
Base class for all lexers.
c                ó   • g)a$  
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© )ÚselfÚdocuments     ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/prompt_toolkit/lexers/base.pyÚlex_documentÚLexer.lex_document   s   � ó    c                ó   • [        U 5      $ )zb
When this changes, `lex_document` could give a different output.
(Only used for `DynamicLexer`.)
)Úid)r   s    r   Úinvalidation_hashÚLexer.invalidation_hash$   s   € ô
 �$‹xˆr   r   N©r   r   Úreturnz#Callable[[int], StyleAndTextTuples]©r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   Ú__static_attributes__r   r   r   r
   r
      s    † ñð óó ð÷r   r
   )Ú	metaclassc                  ó0   • \ rS rSrSrSSS jjrS	S jrSrg)
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.
c                ó   • Xl         g ©N©Ústyle)r   r*   s     r   Ú__init__ÚSimpleLexer.__init__4   s   € Ø�
r   c                ó4   ^ ^• UR                   mSUU 4S jjnU$ )Nc                óN   >•  TR                   TU    4/$ ! [         a    / s $ f = f)z%Return the tokens for the given line.)r*   Ú
IndexError)ÚlinenoÚlinesr   s    €€r   Úget_lineÚ*SimpleLexer.lex_document.<locals>.get_line:   s2   ø€ ðØŸ™ U¨6¡]Ð3Ð4Ð4øÜó Ø’	ðús   ƒ •$£$)r0   Úintr   r	   )r1   )r   r   r2   r1   s   `  @r   r   ÚSimpleLexer.lex_document7   s   ù€ Ø—‘ˆ÷	ð 	ð ˆr   r)   N)Ú )r*   Ústrr   ÚNoner   )r   r   r    r!   r"   r+   r   r#   r   r   r   r   r   ,   s   † ñö÷
r   r   c                  ó6   • \ rS rSrSrSS jrS	S jrS
S jrSrg)r   éD   zz
Lexer class that can dynamically returns any Lexer.

:param get_lexer: Callable that returns a :class:`.Lexer` instance.
c                ó.   • Xl         [        5       U l        g r(   )Ú	get_lexerr   Ú_dummy)r   r<   s     r   r+   ÚDynamicLexer.__init__K   s   € Ø"ŒÜ!“mˆ�r   c                ój   • U R                  5       =(       d    U R                  nUR                  U5      $ r(   )r<   r=   r   )r   r   Úlexers      r   r   ÚDynamicLexer.lex_documentO   s(   € Ø—‘Ó ×/ D§K¡KˆØ×!Ñ! (Ó+Ð+r   c                ó^   • U R                  5       =(       d    U R                  n[        U5      $ r(   )r<   r=   r   )r   r@   s     r   r   ÚDynamicLexer.invalidation_hashS   s!   € Ø—‘Ó ×/ D§K¡KˆÜ�%‹yÐr   )r=   r<   N)r<   zCallable[[], Lexer | None]r   r8   r   r   )	r   r   r    r!   r"   r+   r   r   r#   r   r   r   r   r   D   s   † ñô$ô,÷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>rJ      sF   ðñõ #ç 'ß %å ,Ý Aò€ô�gò ô0�%ô ô0�5õ r   