
                         z    d dl mZ d dlmZ d dlmZmZ d dlmZ ddl	m
Z
 ddlmZmZ dZ G d	 d
e      Zd Zd Zy)    )unicode_literals)	text_type)IncrementalSearchDirectionSEARCH_BUFFER)Token   )token_list_len)	ProcessorTransformation)DefaultPromptc                   4    e Zd ZdZd Zedd       Zd Zd Zy)r   a  
    Default prompt. This one shows the 'arg' and reverse search like
    Bash/readline normally do.

    There are two ways to instantiate a ``DefaultPrompt``. For a prompt
    with a static message, do for instance::

        prompt = DefaultPrompt.from_message('prompt> ')

    For a dynamic prompt, generated from a token list function::

        def get_tokens(cli):
            return [(Token.A, 'text'), (Token.B, 'text2')]

        prompt = DefaultPrompt(get_tokens)
    c                 ,    t        |      sJ || _        y N)callable
get_tokens)selfr   s     /lib/third_party/prompt_toolkit/layout/prompt.py__init__zDefaultPrompt.__init__!   s    
###$    c                 B    t        t              sJ fd} | |      S )zE
        Create a default prompt with a static message text.
        c                 *    t         j                  fgS r   )r   Prompt)climessages    r   get_message_tokensz6DefaultPrompt.from_message.<locals>.get_message_tokens,   s    \\7+,,r   )
isinstancer   )clsr   r   s    ` r   from_messagezDefaultPrompt.from_message%   s&    
 '9---	-%&&r   c                    |j                   rt        |      }n3|j                  j                  t	        |      }n| j                  |      }t        |      |dk7  rt        j                  dz  fg}t        ||z   fdfd      S )Nr    c                     | z   S r    ishift_positions    r   <lambda>z4DefaultPrompt.apply_transformation.<locals>.<lambda>E   
    A,>r   c                     | z
  S r   r"   r#   s    r   r&   z4DefaultPrompt.apply_transformation.<locals>.<lambda>F   r'   r   )tokenssource_to_displaydisplay_to_source)
is_searching_get_isearch_tokensinput_processorarg_get_arg_tokensr   r	   r   r   r   )r   r   documentlinenor*   r)   beforer%   s          @r   apply_transformationz"DefaultPrompt.apply_transformation0   s    (-F  $$0$S)F __S)F (/ Q;||S>%9:;F">">@ 	@r   c                     |j                   S r   )r,   )r   r   s     r   	has_focuszDefaultPrompt.has_focusH   s     r   N)z> )	__name__
__module____qualname____doc__r   classmethodr   r4   r6   r"   r   r   r   r      s+     % ' '@0 r   r   c                 L      fd} fd}d } |        |       z    |       z   S )Nc                      j                   j                  t        j                  k(  rd} nd} t        j
                  j                  d| z  fgS )Nzreverse-i-searchzi-searchz(%s)`)search_state	directionr   BACKWARDr   r   Search)textr   s    r   r3   z#_get_isearch_tokens.<locals>.beforeT   sD    %%)C)L)LL%DD$$gn566r   c                      t         j                  j                  j                   j                  t
           j                  fgS r   )r   r   rA   Textbuffersr   rB   )r   s   r   rB   z!_get_isearch_tokens.<locals>.text\   s0    $$))3;;}+E+J+JKLLr   c                  <    t         j                  j                  dfgS )Nz`: )r   r   rA   r"   r   r   afterz"_get_isearch_tokens.<locals>.after_   s    $$e,--r   r"   )r   r3   rB   rG   s   `   r   r-   r-   S   s+    7M. 8dfuw&&r   c                     | j                   j                  }t        j                  j                  dft        j                  j                  j
                  t        |      ft        j                  j                  dfgS )z$
    Tokens for the arg-prompt.
    z(arg: z) )r.   r/   r   r   ArgrD   str)r   r/   s     r   r0   r0   e   sa     


!
!C 
		8$					C)			4  r   N)
__future__r   sixr   prompt_toolkit.enumsr   r   prompt_toolkit.tokenr   utilsr	   
processorsr
   r   __all__r   r-   r0   r"   r   r   <module>rR      s7    '  J & ! 1
@ I @ F'$
r   