Class: TimeDuration::Duration

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hours: 0, minutes: 0, seconds: 0) ⇒ Duration

Returns a new instance of Duration.



19
20
21
22
23
24
# File 'lib/time_duration.rb', line 19

def initialize(hours: 0, minutes: 0, seconds: 0)
  hours = hours.to_i
  minutes = minutes.to_i
  seconds = seconds.to_i
  @seconds = hours * 3600 + minutes * 60 + seconds
end

Instance Attribute Details

#secondsObject

Returns the value of attribute seconds.



11
12
13
# File 'lib/time_duration.rb', line 11

def seconds
  @seconds
end

Class Method Details

.parse(time_as_string) ⇒ Object

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



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

def self.parse(time_as_string)
  hours, minutes = time_as_string.split(':').map(&:to_i)
  new(hours: hours, minutes: minutes)
end

Instance Method Details

#+(time_duration) ⇒ Object



39
40
41
# File 'lib/time_duration.rb', line 39

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

#-(time_duration) ⇒ Object



43
44
45
# File 'lib/time_duration.rb', line 43

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

#<=>(time_duration) ⇒ Object



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

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

#hoursObject



26
27
28
# File 'lib/time_duration.rb', line 26

def hours
  minutes / 60 + seconds / 3600
end

#inspectObject

override



52
53
54
# File 'lib/time_duration.rb', line 52

def inspect
  to_s
end

#minutesObject



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

def minutes
  (seconds / 60) % 60
end

#to_sObject

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



35
36
37
# File 'lib/time_duration.rb', line 35

def to_s
  "%d:%02d" % [hours, minutes]
end