Example #1
0
        private static List <Block> Parse(AssemblyDef assembly, XmlContainerCodeElement container, ParsingSession session)
        {
            List <Block>   blocks          = new List <Block>();
            ExceptionList  exceptions      = new ExceptionList();
            PermissionList permissions     = new PermissionList();
            Paragraph      inlineContainer = null;

            if (session == null)
            {
                session = new ParsingSession();
            }

            for (int counter = 0; counter < container.Elements.Count;)
            {
                if (container.Elements[counter].IsInline)
                {
                    inlineContainer = new Paragraph();
                    while (counter < container.Elements.Count && container.Elements[counter].IsInline)
                    {
                        inlineContainer.Inlines.Add(Parser.ParseInline(assembly, container.Elements[counter], session));
                        counter++;
                    }
                    blocks.Add(inlineContainer);
                    inlineContainer = null;
                }
                else
                {
                    Block block = Parser.ParseBlock(assembly, container.Elements[counter], session);
                    if (block != null)
                    {
                        if (block is ExceptionEntry)
                        {
                            exceptions.Add(block as ExceptionEntry);
                        }
                        else if (block is PermissionEntry)
                        {
                            permissions.Add(block as PermissionEntry);
                        }
                        else
                        {
                            blocks.Add(block);
                        }
                    }
                    counter++;
                }
            }

            if (exceptions.ExceptionCount > 0)
            {
                blocks.Add(exceptions);
            }
            if (permissions.Count > 0)
            {
                blocks.Add(permissions);
            }

            return(blocks);
        }
Example #2
0
 private static List <Block> Parse(AssemblyDef assembly, XmlContainerCodeElement container)
 {
     return(Parser.Parse(assembly, container, null));
 }
Example #3
0
        private void RenderTable(System.Xml.XmlWriter writer)
        {
            writer.WriteStartElement("table");

            // create the table header
            ListHeaderXmlCodeElement header = (ListHeaderXmlCodeElement)_element.Elements.Find(
                e => e.Element == XmlCodeElements.ListHeader);

            writer.WriteStartElement("header");
            if (header != null)
            {
                XmlContainerCodeElement description = (XmlContainerCodeElement)_element.Elements.Find(
                    e => e.Element == XmlCodeElements.Description);
                XmlContainerCodeElement term = (XmlContainerCodeElement)_element.Elements.Find(
                    e => e.Element == XmlCodeElements.Term);

                writer.WriteStartElement("cell");
                if (term != null)
                {
                    foreach (XmlCodeElement child in term.Elements)
                    { // miss out the listitem and just focus on children
                        this.Serialize(child, writer);
                    }
                }
                else
                {
                    writer.WriteElementString("text", "Term");
                }
                writer.WriteEndElement(); // column

                writer.WriteStartElement("cell");
                if (description != null)
                {
                    foreach (XmlCodeElement child in description.Elements)
                    { // miss out the listitem and just focus on children
                        Serialize(child, writer);
                    }
                }
                else
                {
                    writer.WriteElementString("text", "Description");
                }
                writer.WriteEndElement(); // column
            }
            else
            {
                writer.WriteStartElement("cell");
                writer.WriteElementString("text", "Term");
                writer.WriteEndElement(); // column
                writer.WriteStartElement("cell");
                writer.WriteElementString("text", "Description");
                writer.WriteEndElement(); // column
            }
            writer.WriteEndElement();     // header

            // rows
            List <XmlCodeElement> items = _element.Elements.FindAll(e => e.Element == XmlCodeElements.ListItem);

            foreach (ListItemXmlCodeElement currentItem in items)
            {
                if (currentItem.Elements.Count == 2)
                {
                    writer.WriteStartElement("row");
                    XmlContainerCodeElement description = (XmlContainerCodeElement)currentItem.Elements.Find(
                        e => e.Element == XmlCodeElements.Description);
                    XmlContainerCodeElement term = (XmlContainerCodeElement)currentItem.Elements.Find(
                        e => e.Element == XmlCodeElements.Term);

                    writer.WriteStartElement("cell");
                    if (term != null)
                    {
                        foreach (XmlCodeElement child in term.Elements)
                        { // miss out the listitem and just focus on children
                            Serialize(child, writer);
                        }
                    }
                    writer.WriteEndElement();
                    writer.WriteStartElement("cell");
                    if (description != null)
                    {
                        foreach (XmlCodeElement child in description.Elements)
                        { // miss out the listitem and just focus on children
                            Serialize(child, writer);
                        }
                    }
                    writer.WriteEndElement();
                    writer.WriteEndElement(); // row
                }
            }

            writer.WriteEndElement(); // table
        }