Exemple #1
0
 def completion(self, document, complete_event=None):
     # complete_event is None when this method is called by complete_input()
     if complete_event == None and len(document.text) == 0:
         return
     t = document.text.split()
     if len(t) == 0 or (len(t) == 1 and document.text[-1] != ' '):
         # command completion
         if self.fuzzy_completion and complete_event:
             c = FuzzyWordCompleter(self.commands())
             for v in c.get_completions(document, complete_event):
                 yield v
         else:
             for cmd in self.commands():
                 if cmd.startswith(document.text):
                     yield Completion(cmd,
                                      start_position=-len(document.text))
     else:
         # argument completion
         # complete command(t[0]) first
         try:
             cmd = self.complete_input([t[0]])[0]
         except InvalidInput:
             return
         v = self._commands.get(cmd)
         if not v:
             return
         c = v['completer']
         if c:
             # do argument completion with text after the command (t[0])
             new_document = Document(document.text[len(t[0]):].lstrip())
             for v in c.get_completions(new_document, complete_event):
                 yield v
Exemple #2
0
def test_fuzzy_completer():
    collection = [
        "migrations.py",
        "django_migrations.py",
        "django_admin_log.py",
        "api_user.doc",
        "user_group.doc",
        "users.txt",
        "accounts.txt",
        "123.py",
        "test123test.py",
    ]
    completer = FuzzyWordCompleter(collection)
    completions = completer.get_completions(Document("txt"), CompleteEvent())
    assert [c.text for c in completions] == ["users.txt", "accounts.txt"]

    completions = completer.get_completions(Document("djmi"), CompleteEvent())
    assert [c.text for c in completions] == [
        "django_migrations.py",
        "django_admin_log.py",
    ]

    completions = completer.get_completions(Document("mi"), CompleteEvent())
    assert [c.text for c in completions] == [
        "migrations.py",
        "django_migrations.py",
        "django_admin_log.py",
    ]

    completions = completer.get_completions(Document("user"), CompleteEvent())
    assert [c.text for c in completions] == [
        "user_group.doc",
        "users.txt",
        "api_user.doc",
    ]

    completions = completer.get_completions(Document("123"), CompleteEvent())
    assert [c.text for c in completions] == ["123.py", "test123test.py"]

    completions = completer.get_completions(Document("miGr"), CompleteEvent())
    assert [c.text for c in completions] == [
        "migrations.py",
        "django_migrations.py",
    ]

    # Multiple words ending with space. (Accept all options)
    completions = completer.get_completions(Document("test "), CompleteEvent())
    assert [c.text for c in completions] == collection

    # Multiple words. (Check last only.)
    completions = completer.get_completions(Document("test txt"),
                                            CompleteEvent())
    assert [c.text for c in completions] == ["users.txt", "accounts.txt"]
def test_fuzzy_completer():
    collection = [
            'migrations.py',
            'django_migrations.py',
            'django_admin_log.py',
            'api_user.doc',
            'user_group.doc',
            'users.txt',
            'accounts.txt',
            '123.py',
            'test123test.py'
            ]
    completer = FuzzyWordCompleter(collection)
    completions = completer.get_completions(Document('txt'), CompleteEvent())
    assert [c.text for c in completions] == ['users.txt', 'accounts.txt']

    completions = completer.get_completions(Document('djmi'), CompleteEvent())
    assert [c.text for c in completions] == ['django_migrations.py', 'django_admin_log.py']

    completions = completer.get_completions(Document('mi'), CompleteEvent())
    assert [c.text for c in completions] == ['migrations.py', 'django_migrations.py', 'django_admin_log.py']

    completions = completer.get_completions(Document('user'), CompleteEvent())
    assert [c.text for c in completions] == ['user_group.doc', 'users.txt', 'api_user.doc']

    completions = completer.get_completions(Document('123'), CompleteEvent())
    assert [c.text for c in completions] == ['123.py', 'test123test.py']

    completions = completer.get_completions(Document('miGr'), CompleteEvent())
    assert [c.text for c in completions] == ['migrations.py', 'django_migrations.py',]
Exemple #4
0
def test_fuzzy_completer():
    collection = [
        'migrations.py', 'django_migrations.py', 'django_admin_log.py',
        'api_user.doc', 'user_group.doc', 'users.txt', 'accounts.txt',
        '123.py', 'test123test.py'
    ]
    completer = FuzzyWordCompleter(collection)
    completions = completer.get_completions(Document('txt'), CompleteEvent())
    assert [c.text for c in completions] == ['users.txt', 'accounts.txt']

    completions = completer.get_completions(Document('djmi'), CompleteEvent())
    assert [c.text for c in completions
            ] == ['django_migrations.py', 'django_admin_log.py']

    completions = completer.get_completions(Document('mi'), CompleteEvent())
    assert [c.text for c in completions] == [
        'migrations.py', 'django_migrations.py', 'django_admin_log.py'
    ]

    completions = completer.get_completions(Document('user'), CompleteEvent())
    assert [c.text for c in completions
            ] == ['user_group.doc', 'users.txt', 'api_user.doc']

    completions = completer.get_completions(Document('123'), CompleteEvent())
    assert [c.text for c in completions] == ['123.py', 'test123test.py']

    completions = completer.get_completions(Document('miGr'), CompleteEvent())
    assert [c.text for c in completions] == [
        'migrations.py',
        'django_migrations.py',
    ]
Exemple #5
0
def test_fuzzy_completer():
    collection = [
        'migrations.py', 'django_migrations.py', 'django_admin_log.py',
        'api_user.doc', 'user_group.doc', 'users.txt', 'accounts.txt',
        '123.py', 'test123test.py'
    ]
    completer = FuzzyWordCompleter(collection)
    completions = completer.get_completions(Document('txt'), CompleteEvent())
    assert [c.text for c in completions] == ['users.txt', 'accounts.txt']

    completions = completer.get_completions(Document('djmi'), CompleteEvent())
    assert [c.text for c in completions
            ] == ['django_migrations.py', 'django_admin_log.py']

    completions = completer.get_completions(Document('mi'), CompleteEvent())
    assert [c.text for c in completions] == [
        'migrations.py', 'django_migrations.py', 'django_admin_log.py'
    ]

    completions = completer.get_completions(Document('user'), CompleteEvent())
    assert [c.text for c in completions
            ] == ['user_group.doc', 'users.txt', 'api_user.doc']

    completions = completer.get_completions(Document('123'), CompleteEvent())
    assert [c.text for c in completions] == ['123.py', 'test123test.py']

    completions = completer.get_completions(Document('miGr'), CompleteEvent())
    assert [c.text for c in completions] == [
        'migrations.py',
        'django_migrations.py',
    ]

    # Multiple words ending with space. (Accept all options)
    completions = completer.get_completions(Document('test '), CompleteEvent())
    assert [c.text for c in completions] == collection

    # Multiple words. (Check last only.)
    completions = completer.get_completions(Document('test txt'),
                                            CompleteEvent())
    assert [c.text for c in completions] == ['users.txt', 'accounts.txt']
class FirstWordFuzzyWordCompleter(Completer):
    def __init__(self,
                 words: Union[List[str], Callable[[], List[str]]],
                 meta_dict: Optional[Dict[str, str]] = None,
                 WORD: bool = False) -> None:

        self.words = words
        self.meta_dict = meta_dict or {}
        self.WORD = WORD

        self.fuzzy_word_completer = FuzzyWordCompleter(words=self.words,
                                                       WORD=self.WORD)

    def get_completions(self, document: Document,
                        complete_event: CompleteEvent) -> Iterable[Completion]:
        pattern = re.compile(r"^\w*$")
        if not pattern.match(document.text.strip()):
            return []
        return self.fuzzy_word_completer.get_completions(
            document, complete_event)
def test_fuzzy_completer():
    collection = [
            'migrations.py',
            'django_migrations.py',
            'django_admin_log.py',
            'api_user.doc',
            'user_group.doc',
            'users.txt',
            'accounts.txt',
            '123.py',
            'test123test.py'
            ]
    completer = FuzzyWordCompleter(collection)
    completions = completer.get_completions(Document('txt'), CompleteEvent())
    assert [c.text for c in completions] == ['users.txt', 'accounts.txt']

    completions = completer.get_completions(Document('djmi'), CompleteEvent())
    assert [c.text for c in completions] == ['django_migrations.py', 'django_admin_log.py']

    completions = completer.get_completions(Document('mi'), CompleteEvent())
    assert [c.text for c in completions] == ['migrations.py', 'django_migrations.py', 'django_admin_log.py']

    completions = completer.get_completions(Document('user'), CompleteEvent())
    assert [c.text for c in completions] == ['user_group.doc', 'users.txt', 'api_user.doc']

    completions = completer.get_completions(Document('123'), CompleteEvent())
    assert [c.text for c in completions] == ['123.py', 'test123test.py']

    completions = completer.get_completions(Document('miGr'), CompleteEvent())
    assert [c.text for c in completions] == ['migrations.py', 'django_migrations.py',]

    # Multiple words ending with space. (Accept all options)
    completions = completer.get_completions(Document('test '), CompleteEvent())
    assert [c.text for c in completions] == collection

    # Multiple words. (Check last only.)
    completions = completer.get_completions(Document('test txt'), CompleteEvent())
    assert [c.text for c in completions] == ['users.txt', 'accounts.txt']