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()); }
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); }