def _detect_dict(self, d, s, name): s["type"] = Struct s["jsonname"] = name s["freq"] += 1 for k, v in d.items(): goname = to_goname(k) self._detect(v, s["children"][goname], k)
def detect_struct_info(d, name): def _detect_struct_info(d, s, name): if hasattr(d, "keys"): s["type"] = "struct" s["jsonname"] = name s["freq"] += 1 for k, v in d.items(): goname = to_goname(k) _detect_struct_info(v, s["children"][goname], k) elif isinstance(d, (list, tuple)): s["type2"] = "slice" for x in d: _detect_struct_info(x, s, name) # xxx else: typ = resolve_type(d) s["jsonname"] = name s["freq"] += 1 s["type"] = select_better_type(s["type"], typ) def make_struct_info(): return {"freq": 0, "type": None, "children": defaultdict(make_struct_info)} s = defaultdict(make_struct_info) goname = to_goname(name) _detect_struct_info(d, s[goname], goname) return s[goname]
def detect_struct_info(d, name): def _detect_struct_info(d, s, name): if hasattr(d, "keys"): s["type"] = "struct" s["jsonname"] = name s["freq"] += 1 for k, v in d.items(): goname = to_goname(k) _detect_struct_info(v, s["children"][goname], k) elif isinstance(d, (list, tuple)): s["type2"] = "slice" for x in d: _detect_struct_info(x, s, name) # xxx else: typ = resolve_type(d) s["jsonname"] = name s["freq"] += 1 s["type"] = select_better_type(s["type"], typ) def make_struct_info(): return { "freq": 0, "type": None, "children": defaultdict(make_struct_info) } s = defaultdict(make_struct_info) goname = to_goname(name) _detect_struct_info(d, s[goname], goname) return s[goname]
def _detect_struct_info(d, s, name): if hasattr(d, "keys"): s["type"] = "struct" s["jsonname"] = name s["freq"] += 1 for k, v in d.items(): goname = to_goname(k) _detect_struct_info(v, s["children"][goname], k) elif isinstance(d, (list, tuple)): s["type2"] = "slice" for x in d: _detect_struct_info(x, s, name) # xxx else: typ = resolve_type(d) s["jsonname"] = name s["freq"] += 1 s["type"] = select_better_type(s["type"], typ)
def detect(self, d, name): goname = to_goname(name) self._detect(d, self.state[goname], name) return self.state[goname]