class ArcFurnace::Filter

Public Class Methods

new(source:) click to toggle source
# File lib/arc-furnace/filter.rb, line 11
def initialize(source:)
  @source = source
  @value = nil
end

Public Instance Methods

advance() click to toggle source
# File lib/arc-furnace/filter.rb, line 34
def advance
  loop do
    @value = source.row
    break if value.nil? || filter(value)
  end
end
empty?() click to toggle source
# File lib/arc-furnace/filter.rb, line 30
def empty?
  @value.nil? && source.empty?
end
filter(row) click to toggle source

Given a row from the source, tell if it should be passed down to the next node downstream from this node.

This method must return a boolean

# File lib/arc-furnace/filter.rb, line 26
def filter(row)
  raise "Unimplemented"
end
value() click to toggle source
# File lib/arc-furnace/filter.rb, line 16
def value
  if @value.nil? && !empty?
    advance
  end
  @value
end