public static string Translate(XPathNavigator descriptionNode, ReferenceLinkGeneratorDelegate refLinkGenerator)
        {
            // obtaining desc parent node
            var descParentNode = descriptionNode.Clone();
            descParentNode.MoveToParent();

            return ParseXML((XmlNode)descParentNode.UnderlyingObject,
                (XmlNode)descriptionNode.UnderlyingObject, refLinkGenerator);
        }
Esempio n. 2
0
        public static string Translate(XPathNavigator descriptionNode, ReferenceLinkGeneratorDelegate refLinkGenerator)
        {
            // obtaining desc parent node
            var descParentNode = descriptionNode.Clone();

            descParentNode.MoveToParent();

            return(ParseXML((XmlNode)descParentNode.UnderlyingObject,
                            (XmlNode)descriptionNode.UnderlyingObject, refLinkGenerator));
        }
Esempio n. 3
0
        /** Class ParseXML for all child nodes of the given child
         *
         * @param child xml node we want to parse all children into Markdown
         * @return a string containing the text from the child node
         */
        public static String ParseChildren(XmlNode child, ReferenceLinkGeneratorDelegate refLinkGenerator)
        {
            String output = "";

            foreach (XmlNode childNode in child.ChildNodes)
            {
                output += ParseXML(child, childNode, refLinkGenerator);
            }

            return(output);
        }
Esempio n. 4
0
        /** Parses markdown text out of an XML node
         *
         * @param parent parent node to give context to the child we want to parse
         * @param child xml node we want to parse into Markdown
         * @return a string containing the text from the child node
         */
        public static String ParseXML(XmlNode parent, XmlNode child, ReferenceLinkGeneratorDelegate refLinkGenerator)
        {
            string output = "";

            if (child.HasChildNodes)
            {
                switch (child.Name)
                {
                case "para":
                    if (parent.Name != "listitem" && parent.Name != "parameterdescription" && parent.Name != "simplesect")
                    {
                        output += Environment.NewLine;
                        output += ParseChildren(child, refLinkGenerator);
                    }
                    else if (parent.Name == "listitem")
                    {
                        output += Environment.NewLine;
                        if (child == parent.FirstChild)
                        {
                            output += GetTabs(TabDepth) + "* " + ParseChildren(child, refLinkGenerator);
                        }
                        else
                        {
                            output += Environment.NewLine + GetTabs(TabDepth + 1) + ParseChildren(child, refLinkGenerator);
                        }
                    }
                    else if (parent.Name == "parameterdescription" || parent.Name == "simplesect")
                    {
                        output += ParseChildren(child, refLinkGenerator);
                    }
                    break;

                case "ulink":
                    output += GetTabs(TabDepth) + String.Format("[{0}]({1})", ParseChildren(child, refLinkGenerator), child.Attributes.GetNamedItem("url").InnerText);
                    break;

                case "ref":
                    output += refLinkGenerator(child);

                    /*
                     * String RefName = child.InnerText;
                     * String linkpath = refLinkGenerator(child, RefName, child.Attributes.GetNamedItem("kindref").InnerText);
                     * if (linkpath != "")
                     * {
                     *  output += String.Format("[{0}]({1})", RefName, linkpath);
                     * }
                     * else
                     * {
                     *  output += ParseChildren(child, refLinkGenerator);
                     * }
                     */
                    break;

                case "bold":
                    output += GetTabs(TabDepth) + String.Format("**{0}**", ParseChildren(child, refLinkGenerator));
                    break;

                case "emphasis":
                    output += GetTabs(TabDepth) + String.Format("_{0}_", ParseChildren(child, refLinkGenerator));
                    break;

                case "computeroutput":
                    output += GetTabs(TabDepth) + String.Format("`{0}`", ParseChildren(child, refLinkGenerator));
                    break;

                case "itemizedlist":
                    if (parent.ParentNode.Name == "listitem")
                    {
                        TabDepth++;
                    }
                    else
                    {
                        output += Environment.NewLine;
                    }
                    output += ParseChildren(child, refLinkGenerator);
                    if (parent.ParentNode.Name == "listitem")
                    {
                        TabDepth--;
                    }
                    else
                    {
                        output += Environment.NewLine + Environment.NewLine;
                    }
                    break;

                case "parameterlist":
                    break;

                case "parameteritem":
                    break;

                case "parameternamelist":
                    break;

                case "parameterdescription":
                    break;

                case "simplesect":
                    break;

                case "xrefsect":
                    break;

                default:
                    output += ParseChildren(child, refLinkGenerator);
                    break;
                }
            }
            else
            {
                output += GetTabs(TabDepth) + child.InnerText;
            }

            return(output);
        }
        /** Parses markdown text out of an XML node 
         * 
         * @param parent parent node to give context to the child we want to parse 
         * @param child xml node we want to parse into Markdown 
         * @return a string containing the text from the child node 
         */
        public static String ParseXML(XmlNode parent, XmlNode child, ReferenceLinkGeneratorDelegate refLinkGenerator)
        {
            string output = "";

            if (child.HasChildNodes)
            {
                switch (child.Name)
                {
                    case "para":
                        if (parent.Name != "listitem" && parent.Name != "parameterdescription" && parent.Name != "simplesect")
                        {
                            output += Environment.NewLine;
                            output += ParseChildren(child, refLinkGenerator);
                        }
                        else if (parent.Name == "listitem")
                        {
                            output += Environment.NewLine;
                            if (child == parent.FirstChild)
                            {
                                output += GetTabs(TabDepth) + "* " + ParseChildren(child, refLinkGenerator);
                            }
                            else
                            {
                                output += Environment.NewLine + GetTabs(TabDepth + 1) + ParseChildren(child, refLinkGenerator);
                            }
                        }
                        else if (parent.Name == "parameterdescription" || parent.Name == "simplesect")
                        {
                            output += ParseChildren(child, refLinkGenerator);
                        }
                        break;
                    case "ulink":
                        output += GetTabs(TabDepth) + String.Format("[{0}]({1})", ParseChildren(child, refLinkGenerator), child.Attributes.GetNamedItem("url").InnerText);
                        break;
                    case "ref":
                        output += refLinkGenerator(child);
                        /*
                        String RefName = child.InnerText;
                        String linkpath = refLinkGenerator(child, RefName, child.Attributes.GetNamedItem("kindref").InnerText);
                        if (linkpath != "")
                        {
                            output += String.Format("[{0}]({1})", RefName, linkpath);
                        }
                        else
                        {
                            output += ParseChildren(child, refLinkGenerator);
                        }
                         */
                        break;
                    case "bold":
                        output += GetTabs(TabDepth) + String.Format("**{0}**", ParseChildren(child, refLinkGenerator));
                        break;
                    case "emphasis":
                        output += GetTabs(TabDepth) + String.Format("_{0}_", ParseChildren(child, refLinkGenerator));
                        break;
                    case "computeroutput":
                        output += GetTabs(TabDepth) + String.Format("`{0}`", ParseChildren(child, refLinkGenerator));
                        break;
                    case "itemizedlist":
                        if (parent.ParentNode.Name == "listitem")
                        {
                            TabDepth++;
                        }
                        else
                        {
                            output += Environment.NewLine;
                        }
                        output += ParseChildren(child, refLinkGenerator);
                        if (parent.ParentNode.Name == "listitem")
                        {
                            TabDepth--;
                        }
                        else
                        {
                            output += Environment.NewLine + Environment.NewLine;
                        }
                        break;
                    case "parameterlist":
                        break;
                    case "parameteritem":
                        break;
                    case "parameternamelist":
                        break;
                    case "parameterdescription":
                        break;
                    case "simplesect":
                        break;
                    case "xrefsect":
                        break;
                    default:
                        output += ParseChildren(child, refLinkGenerator);
                        break;
                }
            }
            else
            {
                output += GetTabs(TabDepth) + child.InnerText;
            }

            return output;
        }
        /** Class ParseXML for all child nodes of the given child
         * 
         * @param child xml node we want to parse all children into Markdown 
         * @return a string containing the text from the child node 
         */
        public static String ParseChildren(XmlNode child, ReferenceLinkGeneratorDelegate refLinkGenerator)
        {
            String output = "";

            foreach (XmlNode childNode in child.ChildNodes)
            {
                output += ParseXML(child, childNode, refLinkGenerator);
            }

            return output;
        }