class Numeric
Constants
- DEFAULTS
- UNITS
Public Instance Methods
to_duration(options = {})
click to toggle source
# File lib/time_duration_humanizer.rb, line 26 def to_duration(options = {}) options = DEFAULTS.dup.merge!(options) units = to_duration_units(options).map { |v| t_duration_unit(v) } last = if units.length > 1 && options[:and_at_end] == true " #{I18n.t('time_duration_humanizer.and')} #{units.pop}" else '' end units.join(', ') + last end
Private Instance Methods
t_duration_unit(unit)
click to toggle source
# File lib/time_duration_humanizer.rb, line 56 def t_duration_unit(unit) "#{unit[:value]} " + I18n.t( "time_duration_humanizer.#{unit[:name]}", count: unit[:value] ) end
to_duration_units(options)
click to toggle source
# File lib/time_duration_humanizer.rb, line 39 def to_duration_units(options) units = [] seconds = to_i UNITS.each do |k, v| next if options[k] != true secs = k == :year ? (options[:days_in_year] * UNITS[:day]).to_i : v value = seconds >= secs ? seconds / secs : 0 if value > 0 units << { name: k, value: value } seconds -= value * secs end end units end