Exemplo n.º 1
0
    def get_obj(self):
        path = "./"
        self.load_dict(path, self.loaded_json)
        sorted_keys = sorted(self.my_types.keys())
        my_parent = {}
        my_obj = {}
        for key in sorted_keys:
            my_parent[key] = 0
            obj = Obj(key)
            obj.type = self.my_types[key]

            if obj.type == "list":
                obj.nb_items = self.my_nb_items[key]
                if key in self.my_nb_items_min:
                    obj.nb_items_min = self.my_nb_items_min[key]

            obj.nb_times_it_exists = self.my_paths[key]

            if key in self.my_values:
                obj.values = self.my_values[key]
            my_obj[key] = obj

        for key in sorted_keys:
            parts = key.split("[x]/")
            parts_len = len(parts)
            if parts_len > 1:
                path = parts[0]
                nb_items = my_obj[path].nb_items
                for i in range(1, parts_len - 1):
                    path += "[x]/%s" % parts[i]
                    nb_items *= my_obj[path].nb_items
                my_obj[key].nb_times_it_is_expected = nb_items

        for i in range(0, len(sorted_keys)):
            needle = sorted_keys[i]
            for key in my_parent:
                if len(key) > len(needle) and key.startswith(needle):
                    my_parent[key] = i
        for i in range(1, len(sorted_keys)):
            child_index = sorted_keys[i]
            child = my_obj[child_index]
            parent_index = sorted_keys[my_parent[child_index]]
            parent = my_obj[parent_index]
            parent.add_child(child)

        return my_obj["./"]