Ejemplo n.º 1
0
        void AddNewLineAfterUsings()
        {
            if (CheckOption((int)CleanupTypes.Add_An_Empty_Line_After_Using_Statements))
            {
                var list = InitialSource.DescendantNodesOfType <UsingDirectiveSyntax>()
                           .Select(x => new
                {
                    StartLine   = x.GetFileLinePosSpan().StartLinePosition.Line,
                    EndLine     = x.GetFileLinePosSpan().EndLinePosition.Line,
                    EndPosition = x.FullSpan.End,
                    Directive   = x
                });

                var join = list.Join(list, a => a.EndLine + 1, b => b.StartLine, (a, b) => a);

                var selectedDirectives = list.Except(join)
                                         .Where(x => !InitialSource.FindTrivia(x.EndPosition, false)
                                                .IsKind(SyntaxKind.EndOfLineTrivia))
                                         .Select(x => x.Directive);

                InitialSource = InitialSource.ReplaceNodes(selectedDirectives, (a, b) =>
                {
                    return(b.WithTrailingTrivia(
                               b.GetTrailingTrivia().AddRange(
                                   SyntaxFactory.ParseTrailingTrivia("\n"))));
                });
            }
        }
        void TrimFile()
        {
            var newLeadingTriviaList = CleanUpListWithNoWhitespaces(InitialSource.GetLeadingTrivia(), CleanupTypes.Trim_The_File);

            InitialSource = InitialSource.WithLeadingTrivia(newLeadingTriviaList);

            var endOfFileToken       = InitialSource.DescendantTokens().SingleOrDefault(x => x.IsKind(SyntaxKind.EndOfFileToken));
            var beforeEndOfFileToken = endOfFileToken.GetPreviousToken();

            var leadingTriviList = endOfFileToken.LeadingTrivia;

            leadingTriviList = CleanUpListWithNoWhitespaces(leadingTriviList, CleanupTypes.Trim_The_File, itsForCloseBrace: true);

            if (CheckOption((int)CleanupTypes.Trim_The_File))
            {
                if (leadingTriviList.Any() && leadingTriviList.Last().IsKind(SyntaxKind.EndOfLineTrivia))
                {
                    leadingTriviList = leadingTriviList.Take(leadingTriviList.Count - 1).ToSyntaxTriviaList();
                }
            }

            var newEndOfFileToken = endOfFileToken.WithLeadingTrivia(leadingTriviList);

            newLeadingTriviaList = CleanUpListWithNoWhitespaces(beforeEndOfFileToken.TrailingTrivia, CleanupTypes.Trim_The_File);

            var newBeforeEndOfFileToken = beforeEndOfFileToken.WithTrailingTrivia(newLeadingTriviaList)
                                          .WithTrailingTrivia((leadingTriviList != null && leadingTriviList.Any()) ? SyntaxFactory.CarriageReturn : SyntaxFactory.ElasticSpace);

            InitialSource = InitialSource.ReplaceTokens(new[] { endOfFileToken, beforeEndOfFileToken },
                                                        (token1, token2) =>
            {
                if (token1 == endOfFileToken)
                {
                    return(newEndOfFileToken);
                }
                return(newBeforeEndOfFileToken);
            }
                                                        );
        }