@@ -99,15 +99,15 @@ def parse(self):
99
99
else :
100
100
self .main_sheet .append (field )
101
101
102
- def parse_schema_dict (self , parent_path , schema_dict , parent_id_fields = None , title_lookup = None ):
102
+ def parse_schema_dict (self , parent_path , schema_dict , parent_id_fields = None , title_lookup = None , parent_title = '' ):
103
103
if parent_path :
104
104
parent_path = parent_path + '/'
105
105
parent_id_fields = parent_id_fields or []
106
106
title_lookup = self .title_lookup if title_lookup is None else title_lookup
107
107
if 'properties' in schema_dict :
108
108
if 'id' in schema_dict ['properties' ]:
109
109
if self .use_titles :
110
- id_fields = parent_id_fields + [parent_path + (schema_dict ['properties' ]['id' ].get ('title' ) or 'id' )]
110
+ id_fields = parent_id_fields + [( parent_title if parent_title is not None else parent_path ) + (schema_dict ['properties' ]['id' ].get ('title' ) or 'id' )]
111
111
else :
112
112
id_fields = parent_id_fields + [parent_path + 'id' ]
113
113
else :
@@ -127,7 +127,8 @@ def parse_schema_dict(self, parent_path, schema_dict, parent_id_fields=None, tit
127
127
parent_path + property_name ,
128
128
property_schema_dict ,
129
129
parent_id_fields = id_fields ,
130
- title_lookup = title_lookup .get (title )):
130
+ title_lookup = title_lookup .get (title ),
131
+ parent_title = parent_title + title + ':' if title else None ):
131
132
yield (
132
133
property_name + '/' + field ,
133
134
# TODO ambiguous use of "title"
@@ -165,7 +166,8 @@ def parse_schema_dict(self, parent_path, schema_dict, parent_id_fields=None, tit
165
166
parent_path + property_name + '/0' ,
166
167
property_schema_dict ['items' ],
167
168
parent_id_fields = id_fields ,
168
- title_lookup = title_lookup .get (title ))
169
+ title_lookup = title_lookup .get (title ),
170
+ parent_title = parent_title + title + ':' if title else None )
169
171
170
172
rolledUp = set ()
171
173
@@ -177,8 +179,7 @@ def parse_schema_dict(self, parent_path, schema_dict, parent_id_fields=None, tit
177
179
warn ('Field {} does not have a title, skipping it and all its children.' .format (property_name ))
178
180
else :
179
181
# This code only works for arrays that are at 0 or 1 layer of nesting
180
- assert len (parent_path .replace ('/0/' , '/' ).split ('/' )) <= 2
181
- sub_sheet .add_field (title + ':' + child_title )
182
+ sub_sheet .add_field (parent_title + title + ':' + child_title )
182
183
else :
183
184
sub_sheet .add_field (parent_path + property_name + '/0/' + field )
184
185
if self .rollup and 'rollUp' in property_schema_dict and field in property_schema_dict ['rollUp' ]:
0 commit comments