o
    ˷e\                     @   sj   d dl mZmZmZmZmZmZmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ dgZG dd de
ZdS )    )CallableIterableListMappingOptionalPatternUnion)CompleteEvent	Completer
Completion)Document)AnyFormattedTextWordCompleterc                   @   s   e Zd ZdZ							ddeee eg ee f f dede	e
eef  de	e
eef  ded	ed
ede	ee  ddfddZdededee fddZdS )r   a  
    Simple autocompletion on a list of words.

    :param words: List of words or callable that returns a list of words.
    :param ignore_case: If True, case-insensitive completion.
    :param meta_dict: Optional dict mapping words to their meta-text. (This
        should map strings to strings or formatted text.)
    :param WORD: When True, use WORD characters.
    :param sentence: When True, don't complete by comparing the word before the
        cursor, but by comparing all the text before the cursor. In this case,
        the list of words is just a list of strings, where each string can
        contain spaces. (Can not be used together with the WORD option.)
    :param match_middle: When True, match not only the start, but also in the
                         middle of the word.
    :param pattern: Optional compiled regex for finding the word before
        the cursor to complete. When given, use this regex pattern instead of
        default one (see document._FIND_WORD_RE)
    FNwordsignore_casedisplay_dict	meta_dictWORDsentencematch_middlepatternreturnc	           	      C   sH   |r|rJ || _ || _|pi | _|pi | _|| _|| _|| _|| _d S )N)r   r   r   r   r   r   r   r   )	selfr   r   r   r   r   r   r   r    r   _/var/www/ideatree/venv/lib/python3.10/site-packages/prompt_toolkit/completion/word_completer.py__init__    s   


zWordCompleter.__init__documentcomplete_eventc                 #   s     j }t|r| } jr|jn	|j j jd jr" dt	dt
f fdd}|D ] }||rP j||} j|d}t|t ||dV  q0d S )N)r   r   wordr   c                    s&    j r|  }  jr| v S | S )z-True when the word before the cursor matches.)r   lowerr   
startswith)r   r   word_before_cursorr   r   word_matchesJ   s
   
z3WordCompleter.get_completions.<locals>.word_matches )textstart_positiondisplaydisplay_meta)r   callabler   text_before_cursorget_word_before_cursorr   r   r   r   strboolr   getr   r   len)r   r   r   r   r#   ar'   r(   r   r!   r   get_completions7   s0   
zWordCompleter.get_completions)FNNFFFN)__name__
__module____qualname____doc__r   r   r,   r   r-   r   r   r   r   r   r   r	   r   r   r1   r   r   r   r   r      sF    
	

N)typingr   r   r   r   r   r   r   prompt_toolkit.completionr	   r
   r   prompt_toolkit.documentr   prompt_toolkit.formatted_textr   __all__r   r   r   r   r   <module>   s   $ 