Beispiel #1
0
    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
Beispiel #2
0
    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