Method: AST::Node#initialize

Defined in:
lib/ast/node.rb

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

Constructs a new instance of Node.

The arguments `type` and `children` are converted with `to_sym` and `to_a` respectively. Additionally, the result of converting `children` is frozen. While mutating the arguments is generally considered harmful, the most common case is to pass an array literal to the constructor. If your code does not expect the argument to be frozen, use `#dup`.

The `properties` hash is passed to #assign_properties.


72
73
74
75
76
77
78
79
80
# File 'lib/ast/node.rb', line 72

def initialize(type, children=[], properties={})
  @type, @children = type.to_sym, children.to_a.freeze

  assign_properties(properties)

  @hash = [@type, @children, self.class].hash

  freeze
end