Class: Transpec::AST::Node
- Inherits:
-
Parser::AST::Node
- Object
- Parser::AST::Node
- Transpec::AST::Node
- Defined in:
- lib/transpec/ast/node.rb
Instance Attribute Summary collapse
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
Instance Method Summary collapse
- #ancestor_nodes ⇒ Object
- #child_nodes ⇒ Object
- #descendent_nodes ⇒ Object
- #each_ancestor_node(&block) ⇒ Object
- #each_child_node ⇒ Object
- #each_descendent_node(&block) ⇒ Object
- #each_node {|_self| ... } ⇒ Object
-
#initialize(type, children = [], properties = {}) ⇒ Node
constructor
A new instance of Node.
- #parent_node ⇒ Object
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
#metadata ⇒ Object (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_nodes ⇒ Object
50 51 52 |
# File 'lib/transpec/ast/node.rb', line 50 def ancestor_nodes each_ancestor_node.to_a end |
#child_nodes ⇒ Object
65 66 67 |
# File 'lib/transpec/ast/node.rb', line 65 def child_nodes each_child_node.to_a end |
#descendent_nodes ⇒ Object
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_node ⇒ Object
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
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_node ⇒ Object
29 30 31 |
# File 'lib/transpec/ast/node.rb', line 29 def parent_node @mutable_attributes[:parent_node] end |