start implementing a validation layer, refs #215

This commit is contained in:
Jakob Ketterl
2021-01-24 20:53:51 +01:00
parent 8b52988dcd
commit 40e531c0da
8 changed files with 131 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
from abc import ABC, abstractmethod
class ValidatorException(Exception):
pass
class Validator(ABC):
@staticmethod
def of(x):
if isinstance(x, Validator):
return x
if callable(x):
return LambdaValidator(x)
raise ValidatorException("Cannot create validator")
@abstractmethod
def isValid(self, value):
pass
class LambdaValidator(Validator):
def __init__(self, c):
self.callable = c
def isValid(self, value):
return self.callable(value)
class NumberValidator(Validator):
def isValid(self, value):
return isinstance(value, int) or isinstance(value, float)
class IntegerValidator(Validator):
def isValid(self, value):
return isinstance(value, int)
class StringValidator(Validator):
def isValid(self, value):
return isinstance(value, str)