summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Berman <Julian@GrayVines.com>2018-09-30 09:47:31 -0400
committerJulian Berman <Julian@GrayVines.com>2018-09-30 09:47:31 -0400
commitceb37aac7ea96fc90966441728bd035c04d8fdbf (patch)
tree4dbf7390d9b74b69e02a38facc57eadb24662f09
parentec64d69f56805437850ff2b6be80ad322469a79b (diff)
downloadjsonschema-draft7.tar.gz
If/Then/Else.draft7
-rw-r--r--jsonschema/_validators.py13
-rw-r--r--jsonschema/validators.py1
2 files changed, 14 insertions, 0 deletions
diff --git a/jsonschema/_validators.py b/jsonschema/_validators.py
index 2d6d2aa..1107586 100644
--- a/jsonschema/_validators.py
+++ b/jsonschema/_validators.py
@@ -529,3 +529,16 @@ def not_(validator, not_schema, instance, schema):
yield ValidationError(
"%r is not allowed for %r" % (not_schema, instance)
)
+
+
+def if_(validator, if_schema, instance, schema):
+ # FIXME: paths
+ if validator.is_valid(instance, if_schema):
+ if u"then" in schema:
+ then = schema[u"then"]
+ for error in validator.descend(instance, then):
+ yield error
+ elif u"else" in schema:
+ else_ = schema[u"else"]
+ for error in validator.descend(instance, else_):
+ yield error
diff --git a/jsonschema/validators.py b/jsonschema/validators.py
index fd68a9f..fed56a2 100644
--- a/jsonschema/validators.py
+++ b/jsonschema/validators.py
@@ -513,6 +513,7 @@ Draft7Validator = create(
u"exclusiveMaximum": _validators.exclusiveMaximum,
u"exclusiveMinimum": _validators.exclusiveMinimum,
u"format": _validators.format,
+ u"if": _validators.if_,
u"items": _validators.items,
u"maxItems": _validators.maxItems,
u"maxLength": _validators.maxLength,