public override void VisitNamespaceDeclaration(NamespaceDeclarationSyntax node) { var docComment = node.GetLeadingTrivia().Select(i => i.GetStructure()).OfType <DocumentationCommentTriviaSyntax>().FirstOrDefault(); _parsedNamespaces.Add(new ParsedType(node, docComment)); base.VisitNamespaceDeclaration(node); }
NamespaceDeclarationSyntax ApplyNodeChange(NamespaceDeclarationSyntax namespaceNode) { var triviList = namespaceNode.GetLeadingTrivia(); var zeroCondition = _lastTokenIsAOpenBrace || _lastToken == default(SyntaxToken); triviList = CleanUpList(triviList, zeroCondition ? 0 : 1); namespaceNode = namespaceNode .WithOpenBraceToken( namespaceNode.OpenBraceToken .WithLeadingTrivia( CleanUpListWithExactNumberOfWhitespaces(namespaceNode.OpenBraceToken.LeadingTrivia, 0, itsForCloseBrace: true))) .WithCloseBraceToken( namespaceNode.CloseBraceToken .WithLeadingTrivia( CleanUpListWithNoWhitespaces(namespaceNode.CloseBraceToken.LeadingTrivia, itsForCloseBrace: true)) ) .WithLeadingTrivia(triviList); _LastMember = null; return(namespaceNode); }
private static NamespaceDeclarationSyntax FormatLeadingWhitespace(NamespaceDeclarationSyntax namespaceNode) { SyntaxTriviaList leadingTrivia = namespaceNode.GetLeadingTrivia(); string trimmedLeadingTrivia = leadingTrivia.ToString().TrimEnd(); SyntaxTrivia desiredNewlines = GetNewlinesForNamespaceLeadingTrivia(namespaceNode); SyntaxTrivia newLeadingTrivia = SyntaxFactory.SyntaxTrivia(SyntaxKind.SingleLineCommentTrivia, trimmedLeadingTrivia); SyntaxTriviaList updatedLeadingTrivia = SyntaxFactory.TriviaList(newLeadingTrivia, desiredNewlines); return(namespaceNode.WithLeadingTrivia(updatedLeadingTrivia)); }
private NamespaceDeclarationSyntax AddComment(NamespaceDeclarationSyntax node) { var existingTrivia = node.GetLeadingTrivia(); var newTrivia = existingTrivia.Prepend(SyntaxFactory.Comment( $"// {_message}" + $"{(existingTrivia.ToString().EndsWith("\n") ? "" : Environment.NewLine)}")); return(node.WithLeadingTrivia(newTrivia)); }
public static MemberDeclarationSyntax[] GenerateClasses(NamespaceDeclarationSyntax @namespace) { var isInterfaceToClass = @namespace.GetLeadingTrivia().Any(trivia => trivia.ToString().Trim() == "//Meta(interface-to-class)"); if (!isInterfaceToClass) { return(Array <MemberDeclarationSyntax> .Empty); } var resultMembers = new List <MemberDeclarationSyntax>(); foreach (var @interface in @namespace.Members.OfType <InterfaceDeclarationSyntax>()) { resultMembers.Add(ToClass(@interface)); } return(resultMembers.ToArray()); }
NamespaceDeclarationSyntax ApplyNodeChange(NamespaceDeclarationSyntax mainNode) { var leadingTriviaList = mainNode.GetLeadingTrivia(); leadingTriviaList = CleanUpListWithDefaultWhitespaces(leadingTriviaList, CleanupTypes.Remove_DBL_Between_Namespace_Members); mainNode = mainNode .WithOpenBraceToken(ApplyOpenBracket(mainNode.OpenBraceToken)) .WithCloseBraceToken(ApplyCloseBracket(mainNode.CloseBraceToken)) .WithLeadingTrivia(leadingTriviaList); var firstToken = mainNode.OpenBraceToken.GetNextToken(); mainNode = mainNode.ReplaceToken(firstToken, ApplyOpenBracket(firstToken)); return(mainNode); }
private static SyntaxRemoveOptions GetRemoveOptions(NamespaceDeclarationSyntax declaration) { if (declaration.GetLeadingTrivia().All(f => f.IsWhitespaceOrEndOfLineTrivia())) { if (declaration.GetTrailingTrivia().All(f => f.IsWhitespaceOrEndOfLineTrivia())) { return(SyntaxRemoveOptions.KeepNoTrivia); } else { return(SyntaxRemoveOptions.KeepTrailingTrivia); } } else if (declaration.GetTrailingTrivia().All(f => f.IsWhitespaceOrEndOfLineTrivia())) { return(SyntaxRemoveOptions.KeepLeadingTrivia); } else { return(SyntaxRemoveOptions.KeepExteriorTrivia); } }
private static SyntaxRemoveOptions GetRemoveOptions(NamespaceDeclarationSyntax declaration) { if (declaration.GetLeadingTrivia().IsEmptyOrWhitespace()) { if (declaration.GetTrailingTrivia().IsEmptyOrWhitespace()) { return(SyntaxRemoveOptions.KeepNoTrivia); } else { return(SyntaxRemoveOptions.KeepTrailingTrivia); } } else if (declaration.GetTrailingTrivia().IsEmptyOrWhitespace()) { return(SyntaxRemoveOptions.KeepLeadingTrivia); } else { return(SyntaxRemoveOptions.KeepExteriorTrivia); } }
public static NamespaceDeclarationSyntax AddFileHeader(this NamespaceDeclarationSyntax me, string fileHeader, string company) { var header = SyntaxFactory.TriviaList( new[] { SyntaxFactory.Comment("// <auto-generated>"), SyntaxFactory.LineFeed, SyntaxFactory.Comment("//"), SyntaxFactory.LineFeed, SyntaxFactory.Comment("// Generated by"), SyntaxFactory.LineFeed, SyntaxFactory.Comment("// _ _"), SyntaxFactory.LineFeed, SyntaxFactory.Comment("// /\\/\\ __ _ _ __ | |__ __ _ ___ ___ ___| |_"), SyntaxFactory.LineFeed, SyntaxFactory.Comment("// / \\ / _` | '_ \\| '_ \\ / _` / __/ __|/ _ \\ __|"), SyntaxFactory.LineFeed, SyntaxFactory.Comment("// / /\\/\\ \\ (_| | | | | | | | (_| \\__ \\__ \\ __/ |_"), SyntaxFactory.LineFeed, SyntaxFactory.Comment("// \\/ \\/\\__,_|_| |_|_| |_|\\__,_|___/___/\\___|\\__| v 2.0.0"), SyntaxFactory.LineFeed, SyntaxFactory.Comment("//"), SyntaxFactory.LineFeed, SyntaxFactory.Comment($"// <copyright file=\"{fileHeader}.cs\" company=\"{company}\">"), SyntaxFactory.LineFeed, SyntaxFactory.Comment($"// Copyright (c) {company}. All rights reserved."), SyntaxFactory.LineFeed, SyntaxFactory.Comment("// </copyright>"), SyntaxFactory.LineFeed, SyntaxFactory.Comment("// </auto-generated>"), SyntaxFactory.LineFeed, SyntaxFactory.LineFeed, } ); return(me.InsertTriviaBefore(me.GetLeadingTrivia().First(), header)); }
private static SyntaxNode PutUsingsInRightPlace(SyntaxNode rootNode, IList <UsingDirectiveSyntax> usingsThatNeedToBeMoved) { try { ICollection <UsingDirectiveSyntax> clonedNodes = FormatUsings(usingsThatNeedToBeMoved); SyntaxNode intermediateRootNode = rootNode.RemoveNodes(usingsThatNeedToBeMoved, SyntaxRemoveOptions.KeepNoTrivia); var namespaceNode = intermediateRootNode.ChildNodes().First(x => x is NamespaceDeclarationSyntax) as NamespaceDeclarationSyntax; NamespaceDeclarationSyntax newNamespaceNode = namespaceNode.AddUsings(clonedNodes.ToArray()); SyntaxTriviaList firstUsingLeadingTrivia = usingsThatNeedToBeMoved[0].GetLeadingTrivia(); SyntaxTriviaList newNamespaceLeadingTrivia = firstUsingLeadingTrivia.AddRange(newNamespaceNode.GetLeadingTrivia()); newNamespaceNode = newNamespaceNode.WithLeadingTrivia(newNamespaceLeadingTrivia); SyntaxNode newRootNode = intermediateRootNode.ReplaceNode(namespaceNode, newNamespaceNode); return(newRootNode); } catch (Exception) { return(rootNode); } }