class ToDuration::Duration
Constants
- UNITS
Attributes
seconds[R]
Public Class Methods
new(seconds)
click to toggle source
# File lib/to_duration/duration.rb, line 15 def initialize(seconds) @seconds = Integer(seconds) end
Public Instance Methods
add(unit, count)
click to toggle source
# File lib/to_duration/duration.rb, line 43 def add(unit, count) @seconds += UNITS[unit] * count end
days()
click to toggle source
# File lib/to_duration/duration.rb, line 31 def days seconds / UNITS[:days] end
hours()
click to toggle source
# File lib/to_duration/duration.rb, line 35 def hours seconds / UNITS[:hours] end
minutes()
click to toggle source
# File lib/to_duration/duration.rb, line 39 def minutes seconds / UNITS[:minutes] end
months()
click to toggle source
# File lib/to_duration/duration.rb, line 23 def months seconds / UNITS[:months] end
sub(unit, count)
click to toggle source
# File lib/to_duration/duration.rb, line 47 def sub(unit, count) @seconds -= UNITS[unit] * count end
to_s(options = {})
click to toggle source
# File lib/to_duration/duration.rb, line 51 def to_s(options = {}) return ToDuration.t('less_than_one_second') if seconds < 1 units = to_units(options).map do |k, v| "#{v} #{ToDuration.t(k.to_s.chop, count: v)}" end units.join(', ').tap do |s| s.gsub!(/,([^,]*)$/, " #{ToDuration.t('and')}\\1") if units.length > 1 end end
to_units(options = {})
click to toggle source
# File lib/to_duration/duration.rb, line 63 def to_units(options = {}) options = { weeks: false }.merge!(options) duration = Duration.new(seconds) {}.tap do |units| UNITS.keys.each do |k| next if options.key?(k) && options[k] != true count = duration.public_send(k) next if count.zero? units[k] = count duration.sub(k, count) end end end
weeks()
click to toggle source
# File lib/to_duration/duration.rb, line 27 def weeks seconds / UNITS[:weeks] end
years()
click to toggle source
# File lib/to_duration/duration.rb, line 19 def years seconds / UNITS[:years] end