class Fortschritt::Printer

Public Instance Methods

eol(meter) click to toggle source
# File lib/fortschritt/printer.rb, line 35
def eol(meter)
  meter.completed? ? "\n" : ''
end
eta(meter) click to toggle source
# File lib/fortschritt/printer.rb, line 21
def eta(meter)
  result = Time.now + meter.remaining_seconds
  "ETA #{result.strftime "%Y-%m-%d %H:%M:%S"}"
end
finished_after(meter) click to toggle source
# File lib/fortschritt/printer.rb, line 26
def finished_after(meter)
  meter.completed? or return
  "took #{format_seconds(meter.total_elapsed_seconds)}"
end
output(meter) click to toggle source
# File lib/fortschritt/printer.rb, line 7
def output(meter)
  result = [
    slice(meter),
    remaining(meter),
    eta(meter),
    finished_after(meter),
  ].compact.join ' → '
  "\r#{result}#{eol(meter)}"
end
print(meter, stream = STDOUT) click to toggle source
remaining(meter) click to toggle source
# File lib/fortschritt/printer.rb, line 31
def remaining(meter)
  format_seconds meter.remaining_seconds
end
slice(meter) click to toggle source
# File lib/fortschritt/printer.rb, line 17
def slice(meter)
  "#{meter.done}/#{meter.total}"
end

Private Instance Methods

format_seconds(seconds) click to toggle source
"%d days, %d hours, %d minutes and %d seconds" % [dd, hh, mm, ss]

> 3 days, 3 hours, 15 minutes and 21 seconds

# File lib/fortschritt/printer.rb, line 43
def format_seconds(seconds)
  mm, ss = seconds.divmod(60)
  hh, mm = mm.divmod(60)
  dd, hh = hh.divmod(24)
  "%02d:%02d:%02d" % [hh, mm, ss]
end