Exemplo n.º 1
0
            private void AppendExceptionParts(XElement element)
            {
                if (_indentions is null)
                {
                    _indentions = new Dictionary <SymbolDescriptionKind, int>();
                }

                var oldDescription = currentDescription;

                currentDescription = SymbolDescriptionKind.Exceptions;

                if (!HasAnyParts)
                {
                    AppendParts(_provider.CreatePart(SymbolDisplayPartKind.Text, "\r\nExceptions:").Enumerate());
                    _indentions[SymbolDescriptionKind.Exceptions] = 2;
                    _lineBrokenCount = 1;
                }

                foreach (var attribute in element.Attributes())
                {
                    AppendAttributeParts(element.Name.LocalName, attribute, XmlNames.CrefAttribute);
                }

                _indentWasApplied = false;

                _lineBrokenCount = 1;
                ++_indentions[SymbolDescriptionKind.Exceptions];
                foreach (var childNode in element.Nodes())
                {
                    Parse(childNode);
                }
                --_indentions[SymbolDescriptionKind.Exceptions];
                _lineBrokenCount = 1;

                currentDescription = oldDescription;
            }
Exemplo n.º 2
0
 public SymbolDescription(SymbolDescriptionKind kind, ImmutableArray <TaggedText> taggedParts)
 {
     Kind        = kind;
     TaggedParts = taggedParts.IsDefault ? ImmutableArray <TaggedText> .Empty : taggedParts;
 }
Exemplo n.º 3
0
            private void Parse(XNode node)
            {
                if (node.NodeType == XmlNodeType.Comment)
                {
                    return;
                }

                if (node is XText text)
                {
                    AppendParts(_provider.CreatePart(SymbolDisplayPartKind.Text, Normalize(text.Value)).Enumerate());
                    return;
                }

                var element = (node as XDocument)?.Root ?? (XElement)node;

                var name = element.Name.LocalName;

                if (name == XmlNames.SummaryElement)
                {
                    // TODO: does changing description effect on a line breaking?
                    var oldDescription = currentDescription;
                    currentDescription = SymbolDescriptionKind.Additional;

                    foreach (var childNode in element.Nodes())
                    {
                        Parse(childNode);
                    }

                    currentDescription = oldDescription;
                    return;
                }

                if (name == XmlNames.ParaElement)
                {
                    _lineBrokenCount = 2;
                    foreach (var childNode in element.Nodes())
                    {
                        Parse(childNode);
                    }
                    _lineBrokenCount = 2;
                    return;
                }

                if (name == XmlNames.ExceptionElement)
                {
                    AppendExceptionParts(element);
                    return;
                }

                if (name == XmlNames.SeeElement || name == XmlNames.SeeAlsoElement)
                {
                    foreach (var attribute in element.Attributes())
                    {
                        AppendAttributeParts(name, attribute, XmlNames.CrefAttribute);
                    }
                    return;
                }

                if (name == XmlNames.ParameterRefElement || name == XmlNames.TypeParameterRefElement)
                {
                    foreach (var attribute in element.Attributes())
                    {
                        AppendAttributeParts(name, attribute, XmlNames.NameAttribute);
                    }
                    return;
                }

                foreach (var childNode in element.Nodes())
                {
                    Parse(childNode);
                }
            }