Beispiel #1
0
        private static Inline ParseInline(AssemblyDef assembly, XmlCodeElement element, ParsingSession session)
        {
            TraceHelper.WriteLine("parsing-inline: e({0})", element.Element.ToString());

            switch (element.Element)
            {
            // Invalid elements
            case XmlCodeElements.Code:
            case XmlCodeElements.Example:
            case XmlCodeElements.Exception:
            case XmlCodeElements.List:
            case XmlCodeElements.ListHeader:
            case XmlCodeElements.ListItem:
            case XmlCodeElements.Include:
            case XmlCodeElements.Para:
            case XmlCodeElements.Param:
            case XmlCodeElements.Permission:
            case XmlCodeElements.Remarks:
            case XmlCodeElements.Returns:
            case XmlCodeElements.Summary:
            case XmlCodeElements.TypeParam:
            case XmlCodeElements.Value:
                InvalidOperationException ex = new InvalidOperationException(
                    "Found a block level element where an inline element was expected."
                    );
                ex.Data["element"] = element;
                throw ex;

            case XmlCodeElements.B:
                return(new Bold(new Run(element.Text)));

            case XmlCodeElements.C:
                return(new C(element.Text));

            case XmlCodeElements.I:
                return(new Italic(new Run(element.Text)));

            case XmlCodeElements.ParamRef:
                return(new Italic(new Run(element.Text)));

            case XmlCodeElements.See:
                SeeXmlCodeElement seeElement = element as SeeXmlCodeElement;
                string            displayName;
                CrefEntryKey      key;
                if (Parser.ResolveMember(seeElement.Text, seeElement.Member, assembly, out key, out displayName))
                {
                    return(new See(key, displayName));
                }
                else
                {
                    return(new Run(displayName));
                }

            case XmlCodeElements.SeeAlso:
                SeeAlsoXmlCodeElement seeAlsoElement = element as SeeAlsoXmlCodeElement;
                // key and displayname defined in see
                if (Parser.ResolveMember(seeAlsoElement.Text, seeAlsoElement.Member, assembly, out key, out displayName))
                {
                    return(new SeeAlso(key, displayName));
                }
                else
                {
                    return(new SeeAlso(displayName));
                }

            case XmlCodeElements.Text:
                return(new Run(element.Text));

            case XmlCodeElements.TypeParamRef:
                return(new Italic(new Run(element.Text)));
            }

            throw new Exception("Unknown inline parsing error.");
        }
 /// <summary>
 /// Initialises a new instance of the SeeXmlElementRenderer class.
 /// </summary>
 /// <param name="associatedEntry"></param>
 /// <param name="element"></param>
 public SeeXmlElementRenderer(Entry associatedEntry, SeeXmlCodeElement element)
 {
     AssociatedEntry = associatedEntry;
     _element        = element;
 }