Пример #1
0
class DiagramTreeBuilder:
    def build(self, tree):
        self.diagram = Diagram()
        self.instantiate(tree)

        return self.diagram

    def instantiate(self, tree):
        for stmt in tree.stmts:
            if isinstance(stmt, parser.Attr):
                self.diagram.set_attribute(stmt)
            elif isinstance(stmt, parser.FieldItem):
                item = FieldItem(stmt.begin, stmt.end, unquote(stmt.label))
                item.set_attributes(stmt.attrs)

                if item.number is None:
                    if len(self.diagram.fields) == 0:
                        item.number = 0
                    else:
                        last_item = self.diagram.fields[-1]
                        item.number = last_item.number + last_item.colwidth

                self.diagram.fields.append(item)

            elif isinstance(stmt, parser.AttrPlugin):
                self.diagram.set_plugin(stmt.name, stmt.attrs)
Пример #2
0
class DiagramTreeBuilder:
    def build(self, tree):
        self.diagram = Diagram()
        self.instantiate(tree)

        return self.diagram

    def instantiate(self, tree):
        for stmt in tree.stmts:
            if isinstance(stmt, parser.Attr):
                self.diagram.set_attribute(stmt)
            elif isinstance(stmt, parser.FieldItem):
                item = FieldItem(stmt.begin, stmt.end, unquote(stmt.label))
                item.set_attributes(stmt.attrs)

                if item.number is None:
                    if len(self.diagram.fields) == 0:
                        item.number = 0
                    else:
                        last_item = self.diagram.fields[-1]
                        item.number = last_item.number + last_item.colwidth

                self.diagram.fields.append(item)

            elif isinstance(stmt, parser.AttrPlugin):
                self.diagram.set_plugin(stmt.name, stmt.attrs)
Пример #3
0
    def build(self, tree):
        self.diagram = Diagram()
        self.instantiate(tree)

        return self.diagram
Пример #4
0
    def build(cls, tree):
        DiagramNode.clear()
        Diagram.clear()

        return cls(tree).run()
Пример #5
0
    def build(self, tree):
        self.diagram = Diagram()
        self.instantiate(tree)

        return self.diagram
Пример #6
0
    def build(cls, tree):
        DiagramNode.clear()
        Diagram.clear()

        return cls(tree).run()