Module: Sfdown::Fmt

Defined in:
lib/sfdown.rb

Overview

Human-readable formatting for sizes and durations.

Constant Summary collapse

UNITS =
%w[B KB MB GB TB].freeze

Class Method Summary collapse

Class Method Details

.duration(secs) ⇒ Object



438
439
440
441
442
443
444
# File 'lib/sfdown.rb', line 438

def duration(secs)
  return format("%.1fs", secs) if secs < 60

  m, s = secs.round.divmod(60)
  h, m = m.divmod(60)
  h.zero? ? format("%dm%02ds", m, s) : format("%dh%02dm%02ds", h, m, s)
end

.size(bytes) ⇒ Object



428
429
430
431
432
433
434
435
436
# File 'lib/sfdown.rb', line 428

def size(bytes)
  v = bytes.to_f
  i = 0
  while v >= 1024 && i < UNITS.size - 1
    v /= 1024
    i += 1
  end
  i.zero? ? "#{bytes} B" : format("%.1f %s", v, UNITS[i])
end