Exemple #1
0
        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);
            }
Exemple #3
0
        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));
        }
Exemple #4
0
    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));
    }
Exemple #5
0
        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());
        }
Exemple #6
0
        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);
     }
 }
Exemple #8
0
 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));
        }
Exemple #10
0
        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);
            }
        }