diff options
author | nkozlovskiy <nmk@ydb.tech> | 2023-09-29 12:24:06 +0300 |
---|---|---|
committer | nkozlovskiy <nmk@ydb.tech> | 2023-09-29 12:41:34 +0300 |
commit | e0e3e1717e3d33762ce61950504f9637a6e669ed (patch) | |
tree | bca3ff6939b10ed60c3d5c12439963a1146b9711 /contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py | |
parent | 38f2c5852db84c7b4d83adfcb009eb61541d1ccd (diff) | |
download | ydb-e0e3e1717e3d33762ce61950504f9637a6e669ed.tar.gz |
add ydb deps
Diffstat (limited to 'contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py')
-rw-r--r-- | contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py b/contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py new file mode 100644 index 0000000000..0027873f88 --- /dev/null +++ b/contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py @@ -0,0 +1,64 @@ +""" +Input validation for a `Buffer`. +(Validators will be called before accepting input.) +""" +from __future__ import unicode_literals +from .filters import to_simple_filter + +from abc import ABCMeta, abstractmethod +from six import with_metaclass + +__all__ = ( + 'ConditionalValidator', + 'ValidationError', + 'Validator', +) + + +class ValidationError(Exception): + """ + Error raised by :meth:`.Validator.validate`. + + :param cursor_position: The cursor position where the error occured. + :param message: Text. + """ + def __init__(self, cursor_position=0, message=''): + super(ValidationError, self).__init__(message) + self.cursor_position = cursor_position + self.message = message + + def __repr__(self): + return '%s(cursor_position=%r, message=%r)' % ( + self.__class__.__name__, self.cursor_position, self.message) + + +class Validator(with_metaclass(ABCMeta, object)): + """ + Abstract base class for an input validator. + """ + @abstractmethod + def validate(self, document): + """ + Validate the input. + If invalid, this should raise a :class:`.ValidationError`. + + :param document: :class:`~prompt_toolkit.document.Document` instance. + """ + pass + + +class ConditionalValidator(Validator): + """ + Validator that can be switched on/off according to + a filter. (This wraps around another validator.) + """ + def __init__(self, validator, filter): + assert isinstance(validator, Validator) + + self.validator = validator + self.filter = to_simple_filter(filter) + + def validate(self, document): + # Call the validator only if the filter is active. + if self.filter(): + self.validator.validate(document) |