Class: MultiparameterAttributesHandler::Manipulator

Inherits:
Object
  • Object
show all
Defined in:
lib/multiparameter_attributes_handler/manipulator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash, &value_mod) ⇒ Manipulator

Returns a new instance of Manipulator.



6
7
8
9
# File 'lib/multiparameter_attributes_handler/manipulator.rb', line 6

def initialize(hash, &value_mod)
  @hash = hash
  @value_mod = value_mod
end

Instance Attribute Details

#hashObject

Returns the value of attribute hash.



4
5
6
# File 'lib/multiparameter_attributes_handler/manipulator.rb', line 4

def hash
  @hash
end

#value_modObject

Returns the value of attribute value_mod.



4
5
6
# File 'lib/multiparameter_attributes_handler/manipulator.rb', line 4

def value_mod
  @value_mod
end

Instance Method Details

#multiparametersObject



11
12
13
14
15
16
17
18
# File 'lib/multiparameter_attributes_handler/manipulator.rb', line 11

def multiparameters
  keys = multiparameter_keys.collect do |k| 
    k.gsub(ends_with_number_letter_in_brackets, "")
  end
  keys.uniq!
  keys.delete_if{|k| empty_date_values_for? k}
  return keys
end

#outputObject



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/multiparameter_attributes_handler/manipulator.rb', line 33

def output
  begin
    multiparameters.each do |multiparameter|
      hash[multiparameter] = value_of(multiparameter)
    end
  rescue => e
    errors << e
  end
  return hash if errors.empty?
  raise_combined_error(errors)
end

#value_of(multiparameter) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/multiparameter_attributes_handler/manipulator.rb', line 25

def value_of(multiparameter)
  values = values_for(multiparameter)
  return values unless values.kind_of? Array
  time = convert_to_time(multiparameter, values)
  return time unless value_mod
  value_mod.call(time)
end

#values_for(multiparameter) ⇒ Object



20
21
22
23
# File 'lib/multiparameter_attributes_handler/manipulator.rb', line 20

def values_for(multiparameter)
  return hash[multiparameter] unless multiparameters.include? multiparameter
  keys_for(multiparameter).collect{|k| hash[k]}
end