コード例 #1
0
ファイル: GraphVisitor.cs プロジェクト: jjermann/sharpgraph
        private IList <NodePort> HandleSubgraph(DotGrammarParser.SubgraphContext context)
        {
            var nodeList = new List <NodePort>();

            if (context == null)
            {
                return(nodeList);
            }
            var id = context.id() == null
                ? string.Format(CultureInfo.InvariantCulture, ModelHelper.NewSubGraphFormat,
                                ParsedGraph.GetSubGraphs().Count() + 1)
                : context.id().GetText();

            var graphAttrs = GetGraphAttributes(context.stmt_list().stmt());
            var nodeAttrs  = GetNodeAttributes(context.stmt_list().stmt());
            var edgeAttrs  = GetEdgeAttributes(context.stmt_list().stmt());

            CurrentSubGraph = CurrentSubGraph.CreateSubGraph(id, graphAttrs, nodeAttrs, edgeAttrs);
            foreach (var stmtContext in context.stmt_list().stmt())
            {
                nodeList.AddRange(HandleNode(stmtContext.node_stmt()));
                nodeList.AddRange(HandleEdgeLine(stmtContext.edge_stmt()));
                nodeList.AddRange(HandleSubgraph(stmtContext.subgraph()));
                HandleExitSubgraph(stmtContext.subgraph());
            }
            return(nodeList);
        }
コード例 #2
0
ファイル: GraphVisitor.cs プロジェクト: jjermann/sharpgraph
 private void HandleExitSubgraph(DotGrammarParser.SubgraphContext context)
 {
     if (context == null)
     {
         return;
     }
     CurrentSubGraph = CurrentSubGraph.Parent;
 }