in backend/lambdas/tasks/generate_queries.py [0:0]
def get_nested_children(str, nested_type):
"""
Function to get next nested child type from a children string
starting with a complex type such as struct or array
"struct<name:string,age:int,s:struct<n:int>>,b:string" =>
"struct<name:string,age:int,s:struct<n:int>>"
"""
is_struct = nested_type == STRUCT
prefix = STRUCT_PREFIX if is_struct else ARRAYSTRUCT_PREFIX
suffix = STRUCT_SUFFIX if is_struct else ARRAYSTRUCT_SUFFIX
n_opened_tags = len(suffix)
end_index = -1
to_parse = str[len(prefix) :]
for i in range(len(to_parse)):
char = to_parse[i : (i + 1)]
if char == "<":
n_opened_tags += 1
if char == ">":
n_opened_tags -= 1
if n_opened_tags == 0:
end_index = i
break
if end_index < 0:
raise ValueError(SCHEMA_INVALID)
return str[0 : (end_index + len(prefix) + 1)]