class Conscriptor::EventCounter

Public Class Methods

new(logger=simple_logger) click to toggle source
# File lib/conscriptor/event_counter.rb, line 8
def initialize(logger=simple_logger)
  @logger = logger
  clear
end

Public Instance Methods

[](event) click to toggle source
# File lib/conscriptor/event_counter.rb, line 28
def [](event)
  @counts[event]
end
clear(*keys) click to toggle source
# File lib/conscriptor/event_counter.rb, line 36
def clear(*keys)
  if keys.empty?
    @counts = {}
    @errors = {}
  else
    keys.each do |key|
      @counts.delete(key)
      @errors.delete(key)
    end
  end
  @key = {}
end
dump() click to toggle source
# File lib/conscriptor/event_counter.rb, line 61
def dump
  @logger.info("\n#{@counts.sort_by { |_k, v| -v }.map { |k, v| "#{k} = #{v}" }.join("\n")}")

  unless @errors.empty?
    require 'colorize'

    @errors.each do |event, errors|
      @logger.info "Error #{event} (#{errors.count}):\n#{histogram(errors)}".red
    end
  end

  print_key
end
empty?() click to toggle source
# File lib/conscriptor/event_counter.rb, line 49
def empty?
  @counts.empty?
end
errors?() click to toggle source
# File lib/conscriptor/event_counter.rb, line 53
def errors?
  !@errors.empty?
end
print_key() click to toggle source
record(event) click to toggle source
# File lib/conscriptor/event_counter.rb, line 13
def record(event)
  record_many(event, 1)
end
record_and_print(symbol, event) click to toggle source
# File lib/conscriptor/event_counter.rb, line 17
def record_and_print(symbol, event)
  record(event)
  print symbol
  @key[event] = symbol
end
record_error(event, error) click to toggle source
# File lib/conscriptor/event_counter.rb, line 32
def record_error(event, error)
  (@errors[event] ||= []) << error
end
record_many(event, how_many) click to toggle source
# File lib/conscriptor/event_counter.rb, line 23
def record_many(event, how_many)
  @counts[event] ||= 0
  @counts[event] += how_many
end
to_h() click to toggle source
# File lib/conscriptor/event_counter.rb, line 84
def to_h
  @counts
end
to_s() click to toggle source
# File lib/conscriptor/event_counter.rb, line 57
def to_s
  @counts.map { |k, v| "#{k} = #{v}" }.sort.join(', ')
end