static bool TryGetDirective(SyntaxNode root, TextSpan span, out SyntaxTrivia directive) { directive = root.FindTrivia(span.Start); return directive.IsKind(SyntaxKind.RegionDirectiveTrivia) || directive.IsKind(SyntaxKind.EndRegionDirectiveTrivia); }
internal static GetFullCommentedCodeResult GetFullCommentedCode(SyntaxNode root, SyntaxTrivia firstComment) { var result = new StringBuilder(); var current = firstComment; var numberOfComments = 1; var start = firstComment.GetLocation().SourceSpan.Start; int end; do { end = current.GetLocation().SourceSpan.End; result.Append(current.ToString().Substring(2)); var eol = root.FindTrivia(current.GetLocation().SourceSpan.End + 1); if (!eol.IsKind(SyntaxKind.EndOfLineTrivia)) break; var whitespace = root.FindTrivia(eol.GetLocation().SourceSpan.End + 1); if (!whitespace.IsKind(SyntaxKind.WhitespaceTrivia)) break; current = root.FindTrivia(whitespace.GetLocation().SourceSpan.End + 1); if (!current.IsKind(SyntaxKind.SingleLineCommentTrivia)) break; numberOfComments ++; } while (true); return new GetFullCommentedCodeResult(result.ToString(), numberOfComments, start, end); }