Class: Initializer::Generator::Define
- Inherits:
-
Object
- Object
- Initializer::Generator::Define
show all
- Defined in:
- lib/initializer/generator.rb
Defined Under Namespace
Modules: InitializerParameter
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(target_class, parameters) ⇒ Define
Returns a new instance of Define.
52
53
54
55
|
# File 'lib/initializer/generator.rb', line 52
def initialize(target_class, parameters)
@target_class = target_class
@parameters = parameters
end
|
Instance Attribute Details
#parameters ⇒ Object
Returns the value of attribute parameters.
50
51
52
|
# File 'lib/initializer/generator.rb', line 50
def parameters
@parameters
end
|
#target_class ⇒ Object
Returns the value of attribute target_class.
49
50
51
|
# File 'lib/initializer/generator.rb', line 49
def target_class
@target_class
end
|
Class Method Details
.call(target_class, parameters) ⇒ Object
57
58
59
60
61
62
63
|
# 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
|
Instance Method Details
#call ⇒ Object
65
66
67
|
# File 'lib/initializer/generator.rb', line 65
def call
target_class.class_eval(initializer_definition)
end
|
#initializer_definition ⇒ Object
82
83
84
85
86
87
88
|
# File 'lib/initializer/generator.rb', line 82
def initializer_definition
"
def initialize(#{parameter_list})
#{variable_assignment_statements}
end
"
end
|
#parameter_list ⇒ Object
76
77
78
79
80
|
# 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 ⇒ Object
69
70
71
72
73
74
|
# 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
|