Esempio n. 1
0
        public static IEnumerable <T> GetAllSyntaxNodesFromFile <T>(string filePath) where T : SyntaxNode
        {
            if (!_cacheAllSyntaxNodesFromFile.ContainsKey(filePath))
            {
                var document = DocumentProvider.CreateDocumentFromFile(filePath);

                var root  = document.GetSyntaxRootAsync().Result;
                var nodes = root.DescendantNodes().OfType <T>().ToList();
                _cacheAllSyntaxNodesFromFile.TryAdd(filePath, nodes);
            }

            return(_cacheAllSyntaxNodesFromFile[filePath].Select(_ => _ as T));
        }
Esempio n. 2
0
        public static T GetSyntaxNodeFromFile <T>(string filePath, string syntaxIdentifier) where T : SyntaxNode
        {
            var key = filePath + syntaxIdentifier;

            if (!_cacheSyntaxNodeFromFile.ContainsKey(key))
            {
                var document = DocumentProvider.CreateDocumentFromFile(filePath);

                var root = document.GetSyntaxRootAsync().Result;
                var node = root.DescendantNodesAndSelf().OfType <T>().First(_ => _.ChildTokens().Any(t => t.IsKind(SyntaxKind.IdentifierToken) && t.Text == syntaxIdentifier));

                _cacheSyntaxNodeFromFile.TryAdd(key, node);
            }

            return(_cacheSyntaxNodeFromFile[key] as T);
        }
Esempio n. 3
0
        public static FieldDeclarationSyntax GetFieldDeclarationFromFile(string filePath, string syntaxIdentifier)
        {
            var key = filePath + syntaxIdentifier;

            if (!_cacheSyntaxNodeFromFile.ContainsKey(key))
            {
                var document = DocumentProvider.CreateDocumentFromFile(filePath);

                var root = document.GetSyntaxRootAsync().Result;
                var node = root.DescendantNodesAndSelf().OfType <FieldDeclarationSyntax>()
                           .First(_ => _.DescendantNodes().OfType <VariableDeclaratorSyntax>()
                                  .First().ChildTokens().Any(t => t.IsKind(SyntaxKind.IdentifierToken) && t.Text == syntaxIdentifier));

                _cacheSyntaxNodeFromFile.TryAdd(key, node);
            }

            return(_cacheSyntaxNodeFromFile[key]);
        }