class LogfileInterval::AggregatorSet
Public Class Methods
new(parser_columns)
click to toggle source
# File lib/logfile_interval/aggregator_set.rb, line 3 def initialize(parser_columns) @parser_columns = parser_columns @aggregators = {} parser_columns.each do |name, options| next unless klass = options[:aggregator_class] @aggregators[name.to_sym] = klass.new(options.fetch(:custom_options, {})) end end
Public Instance Methods
[](name)
click to toggle source
# File lib/logfile_interval/aggregator_set.rb, line 24 def [](name) raise ArgumentError, "#{name} field does not exist" unless @aggregators.has_key?(name) @aggregators[name.to_sym].values end
add(record)
click to toggle source
# File lib/logfile_interval/aggregator_set.rb, line 12 def add(record) @parser_columns.each do |name, options| next unless @aggregators[name] if record.skip_with_exceptions? && (!options.key?(:noskip) || options[:noskip] == false) next end group_by_value = record[options[:group_by]] if options[:group_by] @aggregators[name].add(record[name], group_by_value) end end
to_hash()
click to toggle source
# File lib/logfile_interval/aggregator_set.rb, line 29 def to_hash @aggregators.inject({}) do |h, pair| k = pair[0] v = pair[1] h[k] = v.values h end end