Sha256: 6b0ce5e105c08df26f85db1fb52cf470c3ac882cda577f5bab7a1bb5cf24f0ef
Contents?: true
Size: 796 Bytes
Versions: 2
Compression:
Stored size: 796 Bytes
Contents
class DurationFormat SECONDS_PER_DAY = 86400 SECONDS_PER_HOUR = 3600 SECONDS_PER_MINUTE = 60 PARTS = %i[day hour min sec].freeze PARTS_IN_SECONDS = { sec: 1, min: SECONDS_PER_MINUTE, hour: SECONDS_PER_HOUR, day: SECONDS_PER_DAY, }.freeze def self.build_parts(value) parts = {} remainder = value.to_f PARTS.each do |part| next if part == :sec part_in_seconds = PARTS_IN_SECONDS[part] parts[part] = remainder.div(part_in_seconds) remainder = (remainder % part_in_seconds).round(9) end parts[:sec] = remainder parts end def self.format(value) parts = build_parts(value) (parts[:day] > 0 ? "#{parts[:day]}day " : "") + sprintf('%02d:%02d:%02d', parts[:hour], parts[:min], parts[:sec].round) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
remain_timer-0.2.3 | lib/duration_format.rb |
remain_timer-0.2.2 | lib/duration_format.rb |