diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py index fe315b02d4aafb81a9c9388d3d20639b6a3a1744..6bfe494c6e2de648323ebbfbaf6fbd36f102fc8d 100644 --- a/src/caosadvancedtools/models/parser.py +++ b/src/caosadvancedtools/models/parser.py @@ -814,7 +814,7 @@ class JsonSchemaParser(Parser): if "patternProperties" in elt: - pattern_property_rts = self_treat_pattern_properties( + pattern_property_rts = self._treat_pattern_properties( elt["patternProperties"], name_prefix=name) for ppr in pattern_property_rts: # add reference to pattern property type. These can never be @@ -875,12 +875,29 @@ class JsonSchemaParser(Parser): return pp 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) pattern_prop = self._get_pattern_prop() + returns = [] for ii, (key, element) in enumerate(pattern_elements.items()): name_suffix = f"_{ii+1}" if num_patterns > 1 else "" 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__":