Module: Yoda::AST::Traversable

Included in:
Vnode
Defined in:
lib/yoda/ast/traversable.rb

Overview

Add query methods to search expected nodes from AST.

Examples:

ast.query(type: :if) # => returns a if node
ast.query(name: :hoge) # => returns a node about an object with the name

See Also:

  • for parameters of query methods.

Instance Method Summary collapse

Instance Method Details

#query(**query) ⇒ Vnode?

Parameters:

  • query (Hash)

    (See Parsing::Traverser::Matcher.new for detailed parameters)

Returns:



11
12
13
# File 'lib/yoda/ast/traversable.rb', line 11

def query(**query)
  Parsing::Traverser.new(self).query(**query)&.node
end

#query_all(**query) ⇒ Parsing::Traverser::ResultSet

Parameters:

  • query (Hash)

    (See Parsing::Traverser::Matcher.new for detailed parameters)

Returns:



17
18
19
# File 'lib/yoda/ast/traversable.rb', line 17

def query_all(**query)
  Parsing::Traverser.new(self).query(**query)
end

#query_ancestor(**query) ⇒ Vnode?

Parameters:

  • query (Hash)

    (See Parsing::Traverser::Matcher.new for detailed parameters)

Returns:



23
24
25
# File 'lib/yoda/ast/traversable.rb', line 23

def query_ancestor(**query)
  Parsing::Traverser.new(self).query_ancestor(**query)&.node
end

#query_ancestors(**query) ⇒ Parsing::Traverser::ResultSet

Parameters:

  • query (Hash)

    (See Parsing::Traverser::Matcher.new for detailed parameters)

Returns:



29
30
31
# File 'lib/yoda/ast/traversable.rb', line 29

def query_ancestors(**query)
  Parsing::Traverser.new(self).query_ancestors(**query)
end