class Speckle::List::Builder

Public Class Methods

new() click to toggle source
# File lib/speckle/list/builder.rb, line 4
def initialize
  @sources = []
  @filters = []
  @filtered = nil
end

Public Instance Methods

add_filter(filter) click to toggle source
# File lib/speckle/list/builder.rb, line 14
def add_filter(filter)
  @filters << filter
end
add_source(source) click to toggle source
# File lib/speckle/list/builder.rb, line 10
def add_source(source)
  @sources << source
end
build() click to toggle source
# File lib/speckle/list/builder.rb, line 37
def build
  rebuild if @filtered.nil?
  @filtered
end
filter_list(list, filter) click to toggle source
# File lib/speckle/list/builder.rb, line 18
def filter_list(list, filter)
  filtered = []
  list.each do |item|
    result = filter.run(item)
    filtered.concat(result)
  end

  filtered
end
rebuild() click to toggle source
# File lib/speckle/list/builder.rb, line 28
def rebuild
  filtered = @sources
  @filters.each do |filter|
    filtered = filter_list(filtered, filter)
  end

  @filtered = filtered
end