diff options
author | Julian Berman <Julian@GrayVines.com> | 2018-09-30 09:47:31 -0400 |
---|---|---|
committer | Julian Berman <Julian@GrayVines.com> | 2018-09-30 09:47:31 -0400 |
commit | ceb37aac7ea96fc90966441728bd035c04d8fdbf (patch) | |
tree | 4dbf7390d9b74b69e02a38facc57eadb24662f09 | |
parent | ec64d69f56805437850ff2b6be80ad322469a79b (diff) | |
download | jsonschema-draft7.tar.gz |
If/Then/Else.draft7
-rw-r--r-- | jsonschema/_validators.py | 13 | ||||
-rw-r--r-- | jsonschema/validators.py | 1 |
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, |