def handle_type_not_in_schema(schema_info, schema, prefix): """ Description: generate c language for parse json map string object Interface: None History: 2019-06-17 """ required = None if 'definitions' in schema: return helpers.Unite( \ helpers.CombinateName("definitions"), 'definitions', \ parse_properties(schema_info, helpers.CombinateName(""), schema, schema, \ schema_info.name.name), None, None, None, None) else: if len(schema) > 1: print('More than one element found in schema') return None value_nodes = [] for value in schema: if 'required' in schema[value]: required = schema[value]['required'] childrens = parse_properties(schema_info, helpers.CombinateName(""), \ schema[value], schema[value], \ schema_info.name.name) value_node = helpers.Unite(helpers.CombinateName(prefix), \ 'object', childrens, None, None, \ None, required) value_nodes.append(value_node) return helpers.Unite(helpers.CombinateName("definitions"), \ 'definitions', value_nodes, None, None, \ None, None)
def parse_schema(schema_info, schema, prefix): """ Description: generate c language for parse json map string object Interface: None History: 2019-06-17 """ required = None if 'type' not in schema: return handle_type_not_in_schema(schema_info, schema, prefix) if 'object' in schema['type']: if 'required' in schema: required = schema['required'] return helpers.Unite( helpers.CombinateName(prefix), 'object', parse_properties(schema_info, \ helpers.CombinateName(""), \ schema, schema, schema_info.name.name), \ None, None, None, required) elif 'array' in schema['type']: item_type, _ = resolve_type(schema_info, helpers.CombinateName(""), \ schema['items'], schema['items'], schema_info.name.name) return helpers.Unite(helpers.CombinateName(prefix), 'array', None, item_type.typ, \ item_type.children, None, item_type.required) else: print("Not supported type '%s'") % schema['type'] return prefix, None
def expand(tree, structs, visited): """ Description: generate c language for parse json map string object Interface: None History: 2019-06-17 """ if tree.children is not None: for i in tree.children: if tree.subtypname: i.subtypname = "from_ref" expand(i, structs, visited=visited) if tree.subtypobj is not None: for i in tree.subtypobj: expand(i, structs, visited=visited) if tree.typ == 'array' and helpers.valid_basic_map_name(tree.subtyp): name = helpers.CombinateName(tree.name + "_element") node = helpers.Unite(name, tree.subtyp, None) expand(node, structs, visited) id_ = "%s:%s" % (tree.name, tree.typ) if id_ not in visited.keys(): structs.append(tree) visited[id_] = tree return structs
def resolve_list(schema_info, name, schema, objs, curfile): """ Description: generate c language for parse json map string object Interface: None History: 2019-06-17 """ obj = [] index = 0 for i in objs: generated_name = helpers.CombinateName( \ i['$ref'].split("/")[-1]) if '$ref' in i \ else helpers.CombinateName(name.name + str(index)) node, _ = resolve_type(schema_info, generated_name, schema, i, curfile) if node: obj.append(node) index += 1 if not obj: obj = None return obj