Class: TimeDuration::Duration

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/time_duration/duration.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hour: 0, minute: 0, second: 0) ⇒ Duration

Returns a new instance of Duration.



13
14
15
16
17
18
# File 'lib/time_duration/duration.rb', line 13

def initialize(hour: 0, minute: 0, second: 0)
  hour = hour.to_i
  minute = minute.to_i
  second = second.to_i
  @second = hour * 3600 + minute * 60 + second
end

Instance Attribute Details

#secondObject (readonly)

Returns the value of attribute second.



5
6
7
# File 'lib/time_duration/duration.rb', line 5

def second
  @second
end

Class Method Details

.parse(time_as_string, format: '%H:%M') ⇒ Object

TODO: format指定できるようにする



8
9
10
11
# File 'lib/time_duration/duration.rb', line 8

def self.parse(time_as_string, format: '%H:%M')
  hour, minute = time_as_string.split(':').map(&:to_i)
  new(hour: hour, minute: minute)
end

Instance Method Details

#+(time_duration) ⇒ Object



33
34
35
# File 'lib/time_duration/duration.rb', line 33

def +(time_duration)
  self.class.new(second: second + time_duration.second)
end

#-(time_duration) ⇒ Object



37
38
39
# File 'lib/time_duration/duration.rb', line 37

def -(time_duration)
  self.class.new(second: second - time_duration.second)
end

#<=>(time_duration) ⇒ Object



41
42
43
# File 'lib/time_duration/duration.rb', line 41

def <=>(time_duration)
  self.second <=> time_duration.second
end

#hourObject



20
21
22
# File 'lib/time_duration/duration.rb', line 20

def hour
  minute / 60 + second.abs / 3600
end

#inspectObject

override



46
47
48
# File 'lib/time_duration/duration.rb', line 46

def inspect
  to_s
end

#minuteObject



24
25
26
# File 'lib/time_duration/duration.rb', line 24

def minute
  (second.abs / 60) % 60
end

#to_sObject

TODO: format指定できるようにする



29
30
31
# File 'lib/time_duration/duration.rb', line 29

def to_s
  "#{'-' if second < 0}%d:%02d" % [hour, minute]
end