def __sortByScope(self, entries, parent): def __findParentForScope(scope, parent): elem = None toSearch = entries for part in scope.split("::"): for e in toSearch: if e.name == part: elem = e toSearch = e.childs parent = e break else: elem = EntryNode(self, part, part) toSearch.append(elem) elem.parent = parent toSearch = elem.childs parent = elem return elem groups = sort_and_group(entries, attrgetter("scope")) # the first group is "None", ie. the top one _, x = next(groups) entries = list(x) for name, elements in groups: p = __findParentForScope(name, parent) p.childs = list(elements) for c in p.childs: c.parent = p return entries
def __sortByScope(self, entries, parent): def __findParentForScope(scope, parent): elem = None toSearch = entries for part in scope.split("::"): for e in toSearch: if e.name == part: elem = e toSearch = e.childs parent = e break else: elem = EntryNode(self, part, part) toSearch.append(elem) elem.parent = parent toSearch = elem.childs parent = elem return elem groups = sort_and_group(entries, attrgetter("scope")) # the first group is "None", ie. the top one _, x = groups.next() entries = list(x) for name, elements in groups: p = __findParentForScope(name, parent) p.childs = list(elements) for c in p.childs: c.parent = p return entries
def __sortByFile(self, entries): res = [] for file_, elements in sort_and_group(entries, attrgetter("file")): entry = EntryNode(self, os.path.basename(file_), file_, type_=EntryNode.FILE) entry.childs = self.__sortByScope(elements, entry) for c in entry.childs: c.parent = entry res.append(entry) return res