Class: Initializer::Generator
- Inherits:
-
Object
- Object
- Initializer::Generator
show all
- Defined in:
- lib/initializer/generator.rb
Defined Under Namespace
Modules: InitializerOptions
Classes: Define, NormalizeParameters
Constant Summary
collapse
- DEFAULT_VISIBILITY =
:reader
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(target_class, parameters) ⇒ Generator
Returns a new instance of Generator.
8
9
10
11
|
# File 'lib/initializer/generator.rb', line 8
def initialize(target_class, parameters)
@target_class = target_class
@parameters = parameters
end
|
Instance Attribute Details
#parameters ⇒ Object
Returns the value of attribute parameters.
6
7
8
|
# File 'lib/initializer/generator.rb', line 6
def parameters
@parameters
end
|
#target_class ⇒ Object
Returns the value of attribute target_class.
5
6
7
|
# File 'lib/initializer/generator.rb', line 5
def target_class
@target_class
end
|
Class Method Details
.build(target_class, parameters) ⇒ Object
13
14
15
16
17
18
|
# File 'lib/initializer/generator.rb', line 13
def self.build(target_class, parameters)
parameters, options = separate_parameters(parameters)
parameters = NormalizeParameters.(parameters, options.visibility)
instance = new target_class, parameters
instance
end
|
.call(target_class, parameters) ⇒ Object
20
21
22
23
|
# File 'lib/initializer/generator.rb', line 20
def self.call(target_class, parameters)
instance = build target_class, parameters
instance.call
end
|
.options?(parameters) ⇒ Boolean
38
39
40
|
# File 'lib/initializer/generator.rb', line 38
def self.options?(parameters)
parameters.last.is_a? Hash
end
|
.separate_parameters(parameters) ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/initializer/generator.rb', line 30
def self.separate_parameters(parameters)
options = { :visibility => DEFAULT_VISIBILITY }
options = parameters.pop if options?(parameters)
options.extend InitializerOptions
return parameters, options
end
|
Instance Method Details
#call ⇒ Object
25
26
27
28
|
# File 'lib/initializer/generator.rb', line 25
def call
define_attributes
Define.(target_class, parameters)
end
|
#define_attributes ⇒ Object
42
43
44
45
46
|
# File 'lib/initializer/generator.rb', line 42
def define_attributes
parameters.each do |p|
::Attribute::Define.(target_class, p.name, p.visibility)
end
end
|