Class: RoadToElDuration::DurationCoder

Inherits:
Object
  • Object
show all
Defined in:
lib/road_to_el_duration/duration_coder.rb

Class Method Summary collapse

Class Method Details

.convert_parts(duration_parts) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/road_to_el_duration/duration_coder.rb', line 12

def self.convert_parts(duration_parts)
  new_duration_parts = {
    hours: duration_parts.delete(:hours) || 0,
    minutes: duration_parts.delete(:minutes) || 0
  }
  duration_parts.delete(:seconds)

  # Take remaining parts (parts larger than hours) and convert to hours
  duration_parts.each do |name, value|
    new_duration_parts[:hours] += value.send(name).in_hours.to_i
  end

  new_duration_parts
end

.dump(value) ⇒ Object



3
4
5
# File 'lib/road_to_el_duration/duration_coder.rb', line 3

def self.dump(value)
  value.to_i
end

.load(value) ⇒ Object



7
8
9
10
# File 'lib/road_to_el_duration/duration_coder.rb', line 7

def self.load(value)
  initial_duration = ActiveSupport::Duration.build(value || 0)
  ActiveSupport::Duration.new(initial_duration.to_i, convert_parts(initial_duration.parts))
end