diff --git a/scripts/dev/generate_epJSON_schema/idd_parser.py b/scripts/dev/generate_epJSON_schema/idd_parser.py index 434b5bf85f9..15fc2fd18ac 100644 --- a/scripts/dev/generate_epJSON_schema/idd_parser.py +++ b/scripts/dev/generate_epJSON_schema/idd_parser.py @@ -99,6 +99,7 @@ class Data: def parse_idd(data): root = {'$schema': "http://json-schema.org/draft-04/schema#", 'properties': {}} data.file_size = len(data.file) + current_group_name = "**ungrouped**" while data.index < data.file_size: token = look_ahead(data) @@ -110,8 +111,7 @@ def parse_idd(data): elif token == TOKEN_EXCLAMATION: eat_comment(data) elif token == TOKEN_GROUP: - next_token(data) - eat_comment(data) + current_group_name = parse_group(data).replace('\\group ', '') else: obj_name = parse_string(data) if obj_name is None or obj_name == "": @@ -119,6 +119,7 @@ def parse_idd(data): obj_data = parse_obj(data) root['properties'][obj_name] = {} root['properties'][obj_name]['patternProperties'] = {} + root['properties'][obj_name]['group'] = current_group_name name_pattern_properties = '.*' if 'name' in obj_data: @@ -725,6 +726,18 @@ def eat_whitespace(data): break +def parse_group(data): + eat_whitespace(data) + s = "" + while data.index < data.file_size: + c = data.file[data.index] + if c == '\n': + data.index += 1 + return s + s += c + data.index += 1 + + def eat_comment(data): if data.file[data.index] == '\n': data.index += 1