class IntervalTimer

Constants

VERSION

Public Class Methods

started() click to toggle source
# File lib/interval_timer/interval_timer.rb, line 2
def self.started
  timer = new
  timer.start
  timer
end

Public Instance Methods

check_in(message = nil) click to toggle source
# File lib/interval_timer/interval_timer.rb, line 14
def check_in(message = nil)
  check_in = build_check_in(message)
  check_ins.push(check_in)
  check_in
end
Also aliased as: mark
check_ins() click to toggle source
# File lib/interval_timer/interval_timer.rb, line 28
def check_ins
  @check_ins ||= []
end
mark(message = nil)
Alias for: check_in
report(message = nil) click to toggle source
# File lib/interval_timer/interval_timer.rb, line 21
def report(message = nil)
  [
    report_header(message).join("\n"),
    report_body.join("\n")
  ].join("\n")
end
start() click to toggle source
# File lib/interval_timer/interval_timer.rb, line 8
def start
  raise "Already started" if @start_time

  @start_time = Time.now
end

Private Instance Methods

build_check_in(message) click to toggle source
# File lib/interval_timer/interval_timer.rb, line 34
def build_check_in(message)
  { created_at: Time.now, message: message }
end
report_body() click to toggle source
# File lib/interval_timer/interval_timer.rb, line 51
def report_body
  output = []

  check_ins.each_with_index do |x, i|
    last = i == 0 ? nil : check_ins[i - 1]

    output.push report_line(x, last)
  end

  output
end
report_header(message) click to toggle source
# File lib/interval_timer/interval_timer.rb, line 38
def report_header(message)
  output = []

  output << ""

  output <<
    "IntervalTimer report" + ( message.nil? ? '' : ": #{ message }" )

  output << "start_time: #{@start_time}"

  output
end
report_line(x, last) click to toggle source
# File lib/interval_timer/interval_timer.rb, line 63
def report_line(x, last)
  if last
    since_last = x[:created_at] - last[:created_at]
  else
    since_last = x[:created_at] - @start_time
  end

  "#{x[:created_at]} -- #{ since_last.round(3) } -- #{x[:message]}"
end