class Initializer::Generator::Define

Attributes

parameters[R]
target_class[R]

Public Class Methods

call(target_class, parameters) click to toggle source
# File lib/initializer/generator.rb, line 57
def self.call(target_class, parameters)
  parameters = parameters.map do |parameter|
    parameter.extend InitializerParameter
  end
  instance = new target_class, parameters
  instance.()
end
new(target_class, parameters) click to toggle source
# File lib/initializer/generator.rb, line 52
def initialize(target_class, parameters)
  @target_class = target_class
  @parameters = parameters
end

Public Instance Methods

call() click to toggle source
# File lib/initializer/generator.rb, line 65
def call
  target_class.class_eval(initializer_definition)
end
initializer_definition() click to toggle source
# File lib/initializer/generator.rb, line 82
def initializer_definition
  "
    def initialize(#{parameter_list})
      #{variable_assignment_statements}
    end
  "
end
parameter_list() click to toggle source
# File lib/initializer/generator.rb, line 76
def parameter_list
  parameter_names = parameters.map { |p| p.name }
  parameter_names = parameter_names.join(", ")
  parameter_names
end
variable_assignment_statements() click to toggle source
# File lib/initializer/generator.rb, line 69
def variable_assignment_statements
  variable_assignments = parameters.inject("") do |assignments, parameter|
    "#{assignments}#{parameter.assignment_statement}\n"
  end
  variable_assignments
end