Class: Usine::Factory

Inherits:
Object
  • Object
show all
Defined in:
lib/usine/factory.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mode, operation, attributes = {}) ⇒ Factory

Returns a new instance of Factory.



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

def initialize(mode, operation, attributes = {})
  @mode = mode
  @operation = operation
  @definitions = attributes.delete(:definitions) || Usine.definitions.fetch(operation, [])
  @sequences = attributes.delete(:sequences) || Usine.sequences
  @attributes = attributes || {}
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



5
6
7
# File 'lib/usine/factory.rb', line 5

def attributes
  @attributes
end

#definitionObject

Returns the value of attribute definition.



6
7
8
# File 'lib/usine/factory.rb', line 6

def definition
  @definition
end

#modeObject (readonly)

Returns the value of attribute mode.



3
4
5
# File 'lib/usine/factory.rb', line 3

def mode
  @mode
end

#operationObject (readonly)

Returns the value of attribute operation.



4
5
6
# File 'lib/usine/factory.rb', line 4

def operation
  @operation
end

Class Method Details

.call(mode, operation, attributes = {}) ⇒ Object



8
9
10
11
# File 'lib/usine/factory.rb', line 8

def self.call(mode, operation, attributes = {})
  factory = new(mode, operation, attributes, definitions)
  factory.process!
end

Instance Method Details

#evaluated_factoryObject



29
30
31
# File 'lib/usine/factory.rb', line 29

def evaluated_factory
  @evaluated_factory ||= evaluate_with_definitions(@sequences)
end

#merged_attributesObject



25
26
27
# File 'lib/usine/factory.rb', line 25

def merged_attributes
  evaluated_factory.attributes.merge(@attributes)
end

#process!Object



21
22
23
# File 'lib/usine/factory.rb', line 21

def process!
  @operation.send(@mode, merged_attributes)
end