From 44eac368586f8e1efc43091e4113ca55e1782034 Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Fri, 6 Feb 2015 10:28:55 -0600 Subject: [PATCH] Remove unnecessary para tags which appear as the single element of a element --- .../RenderAsMarkdownCodeFix.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/OpenStackNetAnalyzers/OpenStackNetAnalyzers/RenderAsMarkdownCodeFix.cs b/OpenStackNetAnalyzers/OpenStackNetAnalyzers/RenderAsMarkdownCodeFix.cs index 425da45..762c35b 100644 --- a/OpenStackNetAnalyzers/OpenStackNetAnalyzers/RenderAsMarkdownCodeFix.cs +++ b/OpenStackNetAnalyzers/OpenStackNetAnalyzers/RenderAsMarkdownCodeFix.cs @@ -139,10 +139,22 @@ private async Task CreateChangedDocument(CodeFixContext context, Docum private SyntaxNode MarkUnnecessaryParagraphs(SyntaxNode originalNode, SyntaxNode rewrittenNode) { XmlElementSyntax elementSyntax = rewrittenNode as XmlElementSyntax; - if (!IsUnnecessaryParaElement(elementSyntax)) - return rewrittenNode; + if (IsUnnecessaryParaElement(elementSyntax)) + return elementSyntax.WithAdditionalAnnotations(UnnecessaryParagraphAnnotation); + + if (string.Equals("summary", elementSyntax?.StartTag?.Name?.ToString(), StringComparison.Ordinal)) + { + SyntaxList trimmedContent = elementSyntax.Content.WithoutFirstAndLastNewlines(); + if (trimmedContent.Count == 1 + && IsParaElement(trimmedContent[0] as XmlElementSyntax) + && !HasAttributes(trimmedContent[0] as XmlElementSyntax)) + { + XmlNodeSyntax paraToRemove = elementSyntax.Content.GetFirstXmlElement("para"); + return elementSyntax.ReplaceNode(paraToRemove, paraToRemove.WithAdditionalAnnotations(UnnecessaryParagraphAnnotation)); + } + } - return elementSyntax.WithAdditionalAnnotations(UnnecessaryParagraphAnnotation); + return rewrittenNode; } private SyntaxNode RemoveUnnecessaryParagraphs(XmlElementSyntax originalNode, XmlElementSyntax rewrittenNode) @@ -203,7 +215,7 @@ private static bool HasLooseContent(SyntaxList content) private static bool HasAttributes(XmlElementSyntax syntax) { - return syntax.StartTag?.Attributes.Count > 0; + return syntax?.StartTag?.Attributes.Count > 0; } private static bool IsParaElement(XmlElementSyntax syntax)