class Stockboy::Filter

Filters can be any callable object that returns true or false. This abstract class is a helpful way to define a commonly used filter pattern.

Interface

Filter subclasses must define a filter method that returns true or false when called with the record context.

@example

class Bouncer < Stockboy::Filter
  def initialize(age)
    @age = age
  end
  def filter(input_context, output_context)
    input_context["RawAge"].empty? or output_context.age < @age
  end
end

Stockboy::Filters.register(:bouncer, Bouncer.new(19))
filter :under_age, :bouncer # in job template

Stockboy::Filters.register(:check_id, Bouncer)
filter :under_age, :bouncer, 19 # in job template

@abstract

Public Instance Methods

call(raw_context, translated_context) click to toggle source

Return true to capture a filtered record, false to pass it on

@param [SourceRecord] raw_context

Unmapped source fields with Hash-like access field names (e.g.
<tt>input["RawField"]</tt>) or raw values on mapped attributes as
methods (e.g. <tt>input.email</tt>)

@param [MappedRecord] translated_context

Mapped and translated fields with access to attributes
as methods (<tt>output.email</tt>)

@return [Boolean]

# File lib/stockboy/filter.rb, line 44
def call(raw_context, translated_context)
  return !!filter(raw_context, translated_context)
end

Private Instance Methods

filter(raw_context, translated_context) click to toggle source

@abstract

# File lib/stockboy/filter.rb, line 52
def filter(raw_context, translated_context)
  raise NoMethodError, "#{self.class}#filter must be implemented"
end