Source code for s3vaultlib.editor.validators

#!/usr/bin/env python
from __future__ import unicode_literals

import json
import re

from prompt_toolkit.validation import Validator, ValidationError

from ..utils import yaml
from ..utils.yaml import ParserError, ScannerError
import six

__author__ = "Giuseppe Chiesa"
__copyright__ = "Copyright 2017-2021, Giuseppe Chiesa"
__credits__ = ["Giuseppe Chiesa"]
__license__ = "BSD"
__maintainer__ = "Giuseppe Chiesa"
__email__ = "mail@giuseppechiesa.it"
__status__ = "PerpetualBeta"


[docs]class JSONValidator(Validator):
[docs] @staticmethod def validate(document): try: json.loads(document.text) except ValueError as e: matches = re.compile('.*\(char\s(\d+).*').findall(str(e)) position = int(matches[0]) if matches else 0 raise ValidationError(message=six.text_type(str(e)), cursor_position=int(position)) except Exception: raise
[docs]class YAMLValidator(Validator):
[docs] def validate(self, document): try: yaml.load_from_stream(document.text) except (ParserError, ScannerError) as e: raise ValidationError(message=six.text_type(str(e.problem)), cursor_position=e.problem_mark.index) except Exception: raise