private IEnumerable <SyntaxTrivia> GetOrCreateCommentTrivias(ITypeTransformationResult transformationResult, string comment)
 {
     return(_cachedComments
            .GetOrAdd(transformationResult.LeadingWhitespaceTrivia.ToFullString(), s => new ConcurrentDictionary <string, ConcurrentDictionary <string, List <SyntaxTrivia> > >())
            .GetOrAdd(transformationResult.EndOfLineTrivia.ToFullString(), s => new ConcurrentDictionary <string, List <SyntaxTrivia> >())
            .GetOrAdd(comment, s => CreateCommentTrivias(transformationResult, s)));
 }
 private static List <SyntaxTrivia> CreateCommentTrivias(ITypeTransformationResult transformationResult, string comment)
 {
     return(Extensions.Internal.SyntaxNodeExtensions.CreateCommentTrivias(
                comment,
                transformationResult.LeadingWhitespaceTrivia,
                transformationResult.EndOfLineTrivia)
            .ToList());
 }
Esempio n. 3
0
 private TypeDeclarationSyntax RunTypeTransformers(TypeDeclarationSyntax transformedNode, ITypeTransformationResult transfromResult,
                                                   INamespaceTransformationMetadata namespaceMetadata, bool missingMembers)
 {
     if (transformedNode == null)
     {
         return(null);
     }
     foreach (var transformer in _configuration.TypeTransformers)
     {
         transformedNode = transformer.Transform(transformedNode, transfromResult, namespaceMetadata, missingMembers) ?? transformedNode;
     }
     return(transformedNode);
 }
        public TypeDeclarationSyntax Transform(TypeDeclarationSyntax transformedNode, ITypeTransformationResult transformationResult,
                                               INamespaceTransformationMetadata namespaceMetadata, bool missingMembers)
        {
            if (!transformedNode.ContainsDirectives)
            {
                return(transformedNode);
            }

            return((TypeDeclarationSyntax)_triviaRemover.Visit(transformedNode));
        }
        public TypeDeclarationSyntax Transform(TypeDeclarationSyntax transformedNode, ITypeTransformationResult transformationResult,
                                               INamespaceTransformationMetadata namespaceMetadata, bool missingMembers)
        {
            if (!_isEnabledForNewTypes && !_isEnabledForPartialTypes)
            {
                return(null);
            }
            var symbol     = transformationResult.AnalyzationResult.Symbol;
            var conversion = transformationResult.AnalyzationResult.Conversion;

            if (_isEnabledForPartialTypes && (conversion == TypeConversion.Partial || missingMembers))
            {
                var comment = _configuration.AddOrReplacePartialTypeComments?.Invoke(symbol);
                if (!string.IsNullOrEmpty(comment))
                {
                    var commentTrivias = GetOrCreateCommentTrivias(transformationResult, comment);
                    return(transformedNode.WithCommentTrivias(commentTrivias));
                }
                if (_configuration.RemovePartialTypeComments?.Invoke(symbol) == true)
                {
                    return(transformedNode.RemoveCommentTrivias());
                }
            }

            if (_isEnabledForNewTypes && (conversion == TypeConversion.Copy || conversion == TypeConversion.NewType))
            {
                var comment = _configuration.AddOrReplaceNewTypeComments?.Invoke(symbol);
                if (!string.IsNullOrEmpty(comment))
                {
                    var commentTrivias = GetOrCreateCommentTrivias(transformationResult, comment);
                    return(transformedNode.WithCommentTrivias(commentTrivias));
                }
                if (_configuration.RemoveNewTypeComments?.Invoke(symbol) == true)
                {
                    return(transformedNode.RemoveCommentTrivias());
                }
            }
            return(null);
        }