json: fix $ref resolution
This commit is contained in:
parent
12f0d7e84b
commit
ea4244e1f7
1 changed files with 11 additions and 0 deletions
|
@ -28,6 +28,7 @@ class SchemaConverter:
|
|||
def __init__(self, prop_order):
|
||||
self._prop_order = prop_order
|
||||
self._rules = {'space': SPACE_RULE}
|
||||
self.ref_base = None
|
||||
|
||||
def _format_literal(self, literal):
|
||||
escaped = GRAMMAR_LITERAL_ESCAPE_RE.sub(
|
||||
|
@ -111,7 +112,17 @@ class SchemaConverter:
|
|||
raise Exception(f'Error processing pattern: {pattern}: {e}') from e
|
||||
|
||||
def visit(self, schema, name):
|
||||
old_ref_base = self.ref_base
|
||||
if 'definitions' in schema:
|
||||
self.ref_base = schema
|
||||
try:
|
||||
return self._visit(schema, name)
|
||||
finally:
|
||||
self.ref_base = old_ref_base
|
||||
|
||||
def _visit(self, schema, name):
|
||||
schema_type = schema.get('type')
|
||||
ref = schema.get('$ref')
|
||||
rule_name = name or 'root'
|
||||
|
||||
if 'oneOf' in schema or 'anyOf' in schema:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue