Class: Initializer::Generator

Inherits:
Object
  • Object
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

#parametersObject (readonly)

Returns the value of attribute parameters.



6
7
8
# File 'lib/initializer/generator.rb', line 6

def parameters
  @parameters
end

#target_classObject (readonly)

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

Returns:

  • (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

#callObject



25
26
27
28
# File 'lib/initializer/generator.rb', line 25

def call
  define_attributes
  Define.(target_class, parameters)
end

#define_attributesObject



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