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