コード例 #1
0
ファイル: BreakBuilder.cs プロジェクト: lanicon/FlowChartCore
        public void CreateSpecialEdge()
        {
            Node    breakablenode = null;
            DotEdge specialedge   = null;

            if (node.label == null)
            {
                breakablenode = node.FindNodesUp(x => x is ForeachNode || x is ForNode || x is WhileNode || x is DoWhileNode || x is DoUntilNode || x is ForNode || x is SwitchNode);

                // New fix for Issue #17
                if (breakablenode == null)
                {
                    specialedge = new DotEdge(node.Id, "end_of_script");
                }
                else
                {
                    specialedge = new DotEdge(node.Id, breakablenode.GetNextId());
                    // fix when label is null, label = "Break From Previous Loop"
                    if (node.label != null)
                    {
                        specialedge.Label = $"Break From {node.Label}";
                    }
                    else
                    {
                        specialedge.Label = $"Break From Previous Loop";
                    }
                }
            }
            else
            {
                breakablenode = node.FindNodesUp(x => x.label == node.label);
                specialedge   = new DotEdge(node.Id, breakablenode.GetNextId());
                //fix, missing label
                specialedge.Label = $"Break From {node.Label}";
            }


            DotDefinition.Add(specialedge);
        }