Skip to content
Snippets Groups Projects
Commit 4e665cd8 authored by florian's avatar florian
Browse files

ENH: Treat pattern properties

parent 0870f300
No related branches found
No related tags found
2 merge requests!73MAINT: change wording of TableImporter argument and allow converters and...,!72Extend json-schema model parser
...@@ -814,7 +814,7 @@ class JsonSchemaParser(Parser): ...@@ -814,7 +814,7 @@ class JsonSchemaParser(Parser):
if "patternProperties" in elt: if "patternProperties" in elt:
pattern_property_rts = self_treat_pattern_properties( pattern_property_rts = self._treat_pattern_properties(
elt["patternProperties"], name_prefix=name) elt["patternProperties"], name_prefix=name)
for ppr in pattern_property_rts: for ppr in pattern_property_rts:
# add reference to pattern property type. These can never be # add reference to pattern property type. These can never be
...@@ -875,12 +875,29 @@ class JsonSchemaParser(Parser): ...@@ -875,12 +875,29 @@ class JsonSchemaParser(Parser):
return pp return pp
def _treat_pattern_properties(self, pattern_elements, name_prefix=""): def _treat_pattern_properties(self, pattern_elements, name_prefix=""):
"""Special Treatment for pattern properties: A RecordType is created for each pattern property.""" """Special Treatment for pattern properties: A RecordType is created for
each pattern property.
"""
num_patterns = len(pattern_elements) num_patterns = len(pattern_elements)
pattern_prop = self._get_pattern_prop() pattern_prop = self._get_pattern_prop()
returns = []
for ii, (key, element) in enumerate(pattern_elements.items()): for ii, (key, element) in enumerate(pattern_elements.items()):
name_suffix = f"_{ii+1}" if num_patterns > 1 else "" name_suffix = f"_{ii+1}" if num_patterns > 1 else ""
name = name_prefix + "Element" + name_suffix name = name_prefix + "Element" + name_suffix
pattern_type = self._treat_record_type(element, name)
# Add pattern property and description
pattern_type.add_property(pattern_prop)
if pattern_type.description:
pattern_type.description += f"\n\npattern: {key}"
else:
pattern_type.description = f"pattern: {key}"
model[name] = pattern_type
returns.append(pattern_type)
return returns
if __name__ == "__main__": if __name__ == "__main__":
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment