class FormattedDuration

Constants

BARE
BARE_FORMATS
CONSTRAINTS
FORMATS

Public Class Methods

new(minutes, constraint = :weeks) click to toggle source
# File lib/formatted_duration.rb, line 9
def initialize(minutes, constraint = :weeks)
  @constraint = CONSTRAINTS.index(constraint)
  @minutes = minutes
  @hours = minutes / 60
  @days = @hours / 24
  @weeks = @days / 7
  @output = []
end

Public Instance Methods

add(unit, value, constraint) click to toggle source
# File lib/formatted_duration.rb, line 34
def add(unit, value, constraint)
  bare = value % BARE[unit]

  if value > 0 && @constraint == constraint
    append(unit, value, FORMATS[unit])
  elsif bare > 0 && @constraint > constraint - 1
    append(unit, bare, BARE_FORMATS[unit])
  end
end
append(unit, value, format) click to toggle source
# File lib/formatted_duration.rb, line 27
def append(unit, value, format)
  opts = {}
  opts[unit] = value

  @output << Duration.new(opts).format(format)
end
format() click to toggle source
# File lib/formatted_duration.rb, line 18
def format
  append(:weeks, @weeks, '%w %~w') if @weeks > 0 && @constraint > 2
  add(:days, @days, 2)
  add(:hours, @hours, 1)
  add(:minutes, @minutes, 0)

  @output.join(', ')
end