Sha256: 55d2e0cff4178bbfb075d33ff5b99a258f224f5ca8d97cdae21f31d47cb0c498

Contents?: true

Size: 686 Bytes

Versions: 1

Compression:

Stored size: 686 Bytes

Contents

# {
#   "convert": {
#     "field": "duration",
#     "type": "integer"
#   }
# }
module Anschel
  class Filter
    def convert conf
      field = conf.delete :field
      type  = conf.delete :type

      raise 'Missing required "field" for "convert" filter' if field.nil?
      raise 'Missing required "type" for "convert" filter' if type.nil?

      field = field.to_sym

      type_conversions = {
        'integer' => :to_i,
        'float'   => :to_f,
        'string'  => :to_s
      }

      lambda do |event|
        return event unless event.has_key? field
        event[field] = event[field].send type_conversions[type]
        filtered event, conf
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
anschel-0.1.0 lib/anschel/filter/convert.rb