public SyntaxTrivia CreateDocComment() { return(SF.Trivia( SF.DocumentationCommentTrivia(SyntaxKind.SingleLineDocumentationCommentTrivia) .AddContent(GetNodes().ToArray()) )); }
public SyntaxTriviaList ConstructTriviaList() { return(SF.TriviaList( SF.Trivia( SF.DocumentationCommentTrivia( SyntaxKind.MultiLineDocumentationCommentTrivia, CreateDocumentElement("Summary", Summary))))); }
private DocumentationCommentTriviaSyntax GetDocCommentWithText(string text) { var summaryComment = SF.DocumentationCommentTrivia(SyntaxKind.SingleLineDocumentationCommentTrivia) .AddContent( SF.XmlText( SF.Token(SyntaxKind.XmlTextLiteralToken) .WithLeadingTrivia( SF.TriviaList(SF.SyntaxTrivia(SyntaxKind.DocumentationCommentExteriorTrivia, "///")) ) ), SF.XmlElement( SF.XmlElementStartTag(SF.XmlName(SF.Identifier(@"summary"))), SF.XmlElementEndTag(SF.XmlName(SF.Identifier(@"summary"))) ) .AddContent( SF.XmlText( SF.Token(SyntaxKind.XmlTextLiteralNewLineToken), SF.Token( SF.TriviaList(SF.SyntaxTrivia(SyntaxKind.DocumentationCommentExteriorTrivia, "///")), SyntaxKind.XmlTextLiteralToken, $" {text}", $" {text}", SF.TriviaList() ), SF.Token(SyntaxKind.XmlTextLiteralNewLineToken), SF.Token(SyntaxKind.XmlTextLiteralToken) .WithLeadingTrivia( SF.TriviaList(SF.SyntaxTrivia(SyntaxKind.DocumentationCommentExteriorTrivia, "///")) ) ) ), SF.XmlText(SF.XmlTextNewLine(SF.TriviaList(), Environment.NewLine, Environment.NewLine, SF.TriviaList())) ) .WithEndOfComment(SF.Token(SyntaxKind.EndOfDocumentationCommentToken)); return(summaryComment); }
private static SyntaxTriviaList MakeXmlDocComments( SyntaxNode maybePrevious, IEnumerable <Field> fields, string defaultSummary) { var xmlParameters = fields.Where(x => x.StructuredTrivia != null) .Select( x => new { Field = x, FieldSummary = x.StructuredTrivia?.Select(i => i.GetStructure()) .OfType <DocumentationCommentTriviaSyntax>() .FirstOrDefault() ?.ChildNodes() .OfType <XmlElementSyntax>() .FirstOrDefault(i => i.StartTag.Name.ToString() == "summary") } ); var newXmlParameters = xmlParameters.Select( x => x.FieldSummary.WithStartTag( SF.XmlElementStartTag( SF.XmlName("param"), SF.SingletonList((XmlAttributeSyntax)SF.XmlNameAttribute(x.Field.Name)) ) ) .WithEndTag(SF.XmlElementEndTag(SF.XmlName("param"))) ); var existingXmlTrivia = maybePrevious?.HasStructuredTrivia == true ? maybePrevious.GetLeadingTrivia() .Select(i => i.GetStructure()) .OfType <DocumentationCommentTriviaSyntax>() .FirstOrDefault() : null; var xmlTrivia = existingXmlTrivia ?? SF.DocumentationCommentTrivia( SyntaxKind.SingleLineDocumentationCommentTrivia, SF.List( new XmlNodeSyntax[] { SF.XmlText(" "), SF.XmlSummaryElement(SF.XmlText(defaultSummary)) } ) ) .WithLeadingTrivia(SF.TriviaList(SF.DocumentationCommentExterior("///"))); var xmlNodes = xmlTrivia.ChildNodes() .OfType <XmlNodeSyntax>() .Where(node => !(node is XmlElementSyntax xmlElement) || xmlElement.StartTag.Name.ToString() != "param") .ToList(); var xmlElementsToKeep = xmlNodes.FindLastIndex(x => x is XmlElementSyntax) + 1; var xmlElements = xmlNodes.Take(xmlElementsToKeep).ToList(); return(SF.TriviaList( SF.LineFeed, SF.Trivia( xmlTrivia.WithContent( SF.List( xmlElements.Concat( newXmlParameters.SelectMany( x => new XmlNodeSyntax[] { SF.XmlText("\n"), x.WithLeadingTrivia( SF.TriviaList() .Concat(xmlTrivia.GetLeadingTrivia()) .Concat(new[] { SF.Space }) ) } ) ) ) ) ), SF.LineFeed )); }