Sha256: e441ffcd3a6d28f6e6383921d5b58e81378cd2c30c035bb3dd155638d3470257

Contents?: true

Size: 575 Bytes

Versions: 4

Compression:

Stored size: 575 Bytes

Contents

# frozen_string_literal: true
module CheeseCloth
  class FilterList
    attr_reader :instance, :filters

    def initialize(instance)
      @instance = instance
      @filters = []
    end

    def add_filter(conditions, block)
      @filters << Filter.new(conditions, block)
    end

    def run_filters(instance)
      runnable_filters_on(instance).each do |filter|
        instance.scope = filter.run(instance)
      end
    end

    private

    def runnable_filters_on(instance)
      filters.select { |filter| filter.conditions_satisfied?(instance) }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cheesecloth-0.1.3 lib/cheesecloth/filter_list.rb
cheesecloth-0.1.2 lib/cheesecloth/filter_list.rb
cheesecloth-0.1.1 lib/cheesecloth/filter_list.rb
cheesecloth-0.1.0 lib/cheesecloth/filter_list.rb