Class: Transpec::AST::Node

Inherits:
Parser::AST::Node
  • Object
show all
Defined in:
lib/transpec/ast/node.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, children = [], properties = {}) ⇒ Node

Returns a new instance of Node.



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/transpec/ast/node.rb', line 10

def initialize(type, children = [], properties = {})
  @metadata = {}
  @mutable_attributes = {}

  # ::AST::Node#initialize freezes itself.
  super

  each_child_node do |child_node|
    child_node.parent_node = self
  end
end

Instance Attribute Details

#metadataObject (readonly)

Returns the value of attribute metadata.



8
9
10
# File 'lib/transpec/ast/node.rb', line 8

def 
  @metadata
end

Instance Method Details

#ancestor_nodesObject



50
51
52
# File 'lib/transpec/ast/node.rb', line 50

def ancestor_nodes
  each_ancestor_node.to_a
end

#child_nodesObject



65
66
67
# File 'lib/transpec/ast/node.rb', line 65

def child_nodes
  each_child_node.to_a
end

#descendent_nodesObject



78
79
80
# File 'lib/transpec/ast/node.rb', line 78

def descendent_nodes
  each_descendent_node.to_a
end

#each_ancestor_node(&block) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/transpec/ast/node.rb', line 39

def each_ancestor_node(&block)
  return to_enum(__method__) unless block_given?

  if parent_node
    yield parent_node
    parent_node.each_ancestor_node(&block)
  end

  self
end

#each_child_nodeObject



54
55
56
57
58
59
60
61
62
63
# File 'lib/transpec/ast/node.rb', line 54

def each_child_node
  return to_enum(__method__) unless block_given?

  children.each do |child|
    next unless child.is_a?(self.class)
    yield child
  end

  self
end

#each_descendent_node(&block) ⇒ Object



69
70
71
72
73
74
75
76
# File 'lib/transpec/ast/node.rb', line 69

def each_descendent_node(&block)
  return to_enum(__method__) unless block_given?

  each_child_node do |child_node|
    yield child_node
    child_node.each_descendent_node(&block)
  end
end

#each_node {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



82
83
84
85
86
# File 'lib/transpec/ast/node.rb', line 82

def each_node(&block)
  return to_enum(__method__) unless block_given?
  yield self
  each_descendent_node(&block)
end

#parent_nodeObject



29
30
31
# File 'lib/transpec/ast/node.rb', line 29

def parent_node
  @mutable_attributes[:parent_node]
end