Example #1
0
        private static void CreateNodes(XNamespace ns, XElement nodes, DgmlNode dgmlNode)
        {
            XElement node;
            if (dgmlNode.Category == "SyntaxToken")
            {
                node = new XElement(ns + "Node",
                    new XAttribute("Id", dgmlNode.Id),
                    new XAttribute("Category", dgmlNode.Category),
                    new XAttribute("Label", dgmlNode.Label));
            }
            else
            {
                node = new XElement(ns + "Node",
                    new XAttribute("Id", dgmlNode.Id),
                    new XAttribute("Category", dgmlNode.Category),
                    new XAttribute("Label", dgmlNode.Kind));
            }

            nodes.Add(node);

            foreach (var childNode in dgmlNode.Childs)
            {
                CreateNodes(ns, nodes, childNode);
            }
        }
Example #2
0
        private static void CreateLinks(XNamespace ns, XElement links, DgmlNode dgmlNode)
        {
            foreach (var childNode in dgmlNode.Childs)
            {
                var link = new XElement(ns + "Link",
                                        new XAttribute("Source", dgmlNode.Id),
                                        new XAttribute("Target", childNode.Id));

                links.Add(link);

                CreateLinks(ns, links, childNode);
            }
        }
Example #3
0
        private static void CreateLinks(XNamespace ns, XElement links, DgmlNode dgmlNode)
        {
            foreach (var childNode in dgmlNode.Childs)
            {
                var link = new XElement(ns + "Link",
                    new XAttribute("Source", dgmlNode.Id),
                    new XAttribute("Target", childNode.Id));

                links.Add(link);

                CreateLinks(ns, links, childNode);
            }
        }
Example #4
0
        private static void WriteAndOpenDgml(DgmlNode dgmlNodes)
        {
            var fileName = @"..\..\syntax.dgml";

            var        document = new XDocument();
            XNamespace ns       = "http://schemas.microsoft.com/vs/2009/dgml";

            var nodes  = new XElement(ns + "Nodes");
            var links  = new XElement(ns + "Links");
            var styles = new XElement(ns + "Styles");

            CreateNodes(ns, nodes, dgmlNodes);
            CreateLinks(ns, links, dgmlNodes);
            CreateStyles(ns, styles);

            document.Add(new XElement(ns + "DirectedGraph", nodes, links, styles));

            document.Save(fileName);
        }
Example #5
0
        private static DgmlNode ProcessNode(SyntaxNode node, int indent = 0)
        {
            var dgmlNode = DgmlNode.Create(node);

            PrintNode(dgmlNode, indent);

            foreach (var childNodeOrToken in node.ChildNodesAndTokens())
            {
                if (childNodeOrToken.IsNode)
                {
                    dgmlNode.AddChild(ProcessNode((SyntaxNode)childNodeOrToken, indent + 1));
                }
                else if (childNodeOrToken.IsToken)
                {
                    dgmlNode.AddChild(ProcessToken((SyntaxToken)childNodeOrToken, indent + 1));
                }
            }

            return(dgmlNode);
        }
Example #6
0
        private static void WriteAndOpenDgml(DgmlNode dgmlNodes)
        {
            var fileName = @"..\..\syntax.dgml";

            var document = new XDocument();
            XNamespace ns = "http://schemas.microsoft.com/vs/2009/dgml";

            var nodes = new XElement(ns + "Nodes");
            var links = new XElement(ns + "Links");
            var styles = new XElement(ns + "Styles");

            CreateNodes(ns, nodes, dgmlNodes);
            CreateLinks(ns, links, dgmlNodes);
            CreateStyles(ns, styles);

            document.Add(new XElement(ns + "DirectedGraph",	nodes, links, styles));

            document.Save(fileName);
        }
Example #7
0
 private static void PrintNode(DgmlNode dgmlNode, int indent)
 {
     Console.WriteLine(string.Join("", Enumerable.Repeat(" ", indent)) + dgmlNode);
 }
Example #8
0
 public void AddChild(DgmlNode childNode)
 {
     this.childNodes.Add(childNode);
 }
Example #9
0
 private static void PrintNode(DgmlNode dgmlNode, int indent)
 {
     Console.WriteLine(string.Join("", Enumerable.Repeat(" ", indent)) + dgmlNode);
 }
Example #10
0
 public void AddChild(DgmlNode childNode)
 {
     this.childNodes.Add(childNode);
 }