Sha256: a68bf736fdc0b6e24c57ab4af6266b6d99a5c165d445cf107c413537db16c434

Contents?: true

Size: 760 Bytes

Versions: 1

Compression:

Stored size: 760 Bytes

Contents

require 'ruby-duration'

class FormattedDuration
  WEEKS_FORMAT = '%w %~w'
  DAYS_FORMAT = '%d %~d'
  HOURS_FORMAT = '%h %~h'
  MINUTES_FORMAT = '%m %~m'

  def initialize(minutes)
    @minutes = minutes % 60
    @hours = minutes / 60
    @days = @hours / 24
    @weeks = @days / 7
  end

  def format
    weekless_days = @days % 7
    dayless_hours = @hours % 24
    output = []

    output << Duration.new(weeks: @weeks).format(WEEKS_FORMAT) if @weeks != 0
    output << Duration.new(days: weekless_days).format(DAYS_FORMAT) if weekless_days != 0
    output << Duration.new(hours: dayless_hours).format(HOURS_FORMAT) if dayless_hours != 0
    output << Duration.new(minutes: @minutes).format(MINUTES_FORMAT) if @minutes != 0

    output.join(', ')
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
duration-formatter-0.1.1 lib/formatted_duration.rb