class Riml::AST_Rewriter::ClassDefinitionToFunctions::InsertInitializeMethod

Public Instance Methods

imported_superclass?() click to toggle source
# File lib/riml/ast_rewriter.rb, line 653
def imported_superclass?
  classes.superclass(ast.full_name).imported?
end
match?(class_node) click to toggle source

if doesn’t have an initialize method, put one at the beginning of the class definition

# File lib/riml/ast_rewriter.rb, line 625
def match?(class_node)
  ClassDefinitionNode === class_node && class_node.constructor.nil?
end
max_recursion_lvl() click to toggle source
# File lib/riml/ast_rewriter.rb, line 657
def max_recursion_lvl
  1
end
replace(class_node) click to toggle source
# File lib/riml/ast_rewriter.rb, line 629
def replace(class_node)
  if class_node.superclass? && !imported_superclass?
    def_node = DefNode.new(
      '!', nil, nil, "initialize", superclass_params, nil, Nodes.new([SuperNode.new([], false)])
    )
  # has imported superclass and no initialize method. Must create
  # initialize method taking *splat parameter and call super with it
  elsif class_node.superclass?
    def_node = DefNode.new(
      '!', nil, nil, "initialize", ['...'], nil, Nodes.new([SuperNode.new([SplatNode.new(GetVariableNode.new('a:', '000'))], false)])
    )
  else
    def_node = DefNode.new(
      '!', nil, nil, "initialize", [], nil, Nodes.new([])
    )
  end
  class_node.expressions.nodes.unshift(def_node)
  reestablish_parents(class_node)
end
superclass_params() click to toggle source
# File lib/riml/ast_rewriter.rb, line 649
def superclass_params
  classes.superclass(ast.full_name).constructor.parameters
end