Class: Initializer::Macro

Inherits:
Object
  • Object
show all
Defined in:
lib/initializer/macro.rb

Defined Under Namespace

Classes: InitializerDefinition

Constant Summary collapse

DEFAULT_VISIBILITY =
:reader

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(target_class, parameters) ⇒ Macro

Returns a new instance of Macro.



8
9
10
11
# File 'lib/initializer/macro.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/macro.rb', line 6

def parameters
  @parameters
end

#target_classObject (readonly)

Returns the value of attribute target_class.



5
6
7
# File 'lib/initializer/macro.rb', line 5

def target_class
  @target_class
end

Class Method Details

.build(target_class, parameters) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/initializer/macro.rb', line 13

def self.build(target_class, parameters)
  parameters, options = separate_parameters(parameters)
  Extension.! options, InitializerOptions
  parameters = NormalizeParameters.normalize(parameters, options.visibility)
  instance = new target_class, parameters
  instance
end

.generate_definitions(target_class, parameters) ⇒ Object



21
22
23
24
# File 'lib/initializer/macro.rb', line 21

def self.generate_definitions(target_class, parameters)
  instance = build target_class, parameters
  instance.generate_definitions
end

.options?(parameters) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/initializer/macro.rb', line 33

def self.options?(parameters)
  parameters.last.is_a? Hash
end

.separate_parameters(parameters) ⇒ Object



26
27
28
29
30
31
# File 'lib/initializer/macro.rb', line 26

def self.separate_parameters(parameters)
  options = { :default => DEFAULT_VISIBILITY }
  options = parameters.pop if options?(parameters)

  return parameters, options
end

Instance Method Details

#define_attributesObject



42
43
44
45
46
# File 'lib/initializer/macro.rb', line 42

def define_attributes
  parameters.each do |p|
    Attribute.define target_class, p.name, p.visibility
  end
end

#generate_definitionsObject



37
38
39
40
# File 'lib/initializer/macro.rb', line 37

def generate_definitions
  define_attributes
  InitializerDefinition.define_initializer(target_class, parameters)
end