class LogfileInterval::Aggregator::Base

Attributes

name[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/logfile_interval/aggregator/base.rb, line 12
def initialize(options = {})
  @name = options[:name]
  @val = Util::Counter.new
  @size = Util::Counter.new
  @options = options
end

Public Instance Methods

add(value, group_by_value = nil) click to toggle source
# File lib/logfile_interval/aggregator/base.rb, line 31
def add(value, group_by_value = nil)
  raise NotImplementedError
end
value(group = nil) click to toggle source
# File lib/logfile_interval/aggregator/base.rb, line 19
def value(group = nil)
  val(key(group))
end
values() click to toggle source
# File lib/logfile_interval/aggregator/base.rb, line 23
def values
  if single_value?
    value
  else
    self.inject({}) { |h, v| h[v[0]] = v[1]; h }
  end
end

Private Instance Methods

average(k) click to toggle source
# File lib/logfile_interval/aggregator/base.rb, line 56
def average(k)
  @size[k] > 0 ? @val[k].to_f / @size[k].to_f : 0
end
each() { |k, val(k)| ... } click to toggle source
# File lib/logfile_interval/aggregator/base.rb, line 46
def each
  @val.each_key do |k|
    yield k, val(k)
  end
end
key(group_by = nil) click to toggle source
# File lib/logfile_interval/aggregator/base.rb, line 37
def key(group_by = nil)
  group_by ? group_by : :all
end
single_value?() click to toggle source
# File lib/logfile_interval/aggregator/base.rb, line 41
def single_value?
  return true if @val.empty?
  @val.keys.count == 1 && @val.keys.first == :all
end
val(k) click to toggle source
# File lib/logfile_interval/aggregator/base.rb, line 52
def val(k)
  @val[k]
end