mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2024-11-30 20:43:50 -06:00
70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
"""
|
|
Using Completion class from
|
|
https://github.com/jonathanslenders/python-prompt-toolkit/
|
|
blob/master/prompt_toolkit/completion.py
|
|
"""
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
__all__ = (
|
|
'Completion'
|
|
)
|
|
|
|
|
|
class Completion(object):
|
|
"""
|
|
:param text: The new string that will be inserted into the document.
|
|
:param start_position: Position relative to the cursor_position where the
|
|
new text will start. The text will be inserted between the
|
|
start_position and the original cursor position.
|
|
:param display: (optional string) If the completion has to be displayed
|
|
differently in the completion menu.
|
|
:param display_meta: (Optional string) Meta information about the
|
|
completion, e.g. the path or source where it's coming from.
|
|
:param get_display_meta: Lazy `display_meta`. Retrieve meta information
|
|
only when meta is displayed.
|
|
"""
|
|
|
|
def __init__(self, text, start_position=0, display=None, display_meta=None,
|
|
get_display_meta=None):
|
|
self.text = text
|
|
self.start_position = start_position
|
|
self._display_meta = display_meta
|
|
self._get_display_meta = get_display_meta
|
|
|
|
if display is None:
|
|
self.display = text
|
|
else:
|
|
self.display = display
|
|
|
|
assert self.start_position <= 0
|
|
|
|
def __repr__(self):
|
|
return '%s(text=%r, start_position=%r)' % (
|
|
self.__class__.__name__, self.text, self.start_position)
|
|
|
|
def __eq__(self, other):
|
|
return (
|
|
self.text == other.text and
|
|
self.start_position == other.start_position and
|
|
self.display == other.display and
|
|
self.display_meta == other.display_meta)
|
|
|
|
def __hash__(self):
|
|
return hash(
|
|
(self.text, self.start_position, self.display, self.display_meta)
|
|
)
|
|
|
|
@property
|
|
def display_meta(self):
|
|
# Return meta-text. (This is lazy when using "get_display_meta".)
|
|
if self._display_meta is not None:
|
|
return self._display_meta
|
|
|
|
elif self._get_display_meta:
|
|
self._display_meta = self._get_display_meta()
|
|
return self._display_meta
|
|
|
|
else:
|
|
return ''
|