Class: DataFilter::FilterSet
- Inherits:
-
Object
- Object
- DataFilter::FilterSet
- Includes:
- DSL
- Defined in:
- lib/data_filter/filter_set.rb
Overview
Represents a collection of data filters that can be called on data. Provides a DSL for creating a filter set and only adding filters the filters that you need.
Defined Under Namespace
Modules: DSL
Instance Attribute Summary collapse
-
#filters ⇒ Object
readonly
Returns the value of attribute filters.
Instance Method Summary collapse
-
#add_filter(filter) ⇒ FilterSet
Add a filter to the filter set.
-
#batch(items) ⇒ Enumerable<Object>
Run the filter set on a collection of data items.
-
#filter(item) ⇒ Object?
Run the filter set on a single data item.
-
#initialize ⇒ FilterSet
constructor
A new instance of FilterSet.
Methods included from DSL
included, #keyword_filter, #like_filter, #method_missing, #prefix_filter, #range_filter, #range_overlap_filter, #respond_to_missing?, #truthy_filter
Constructor Details
#initialize ⇒ FilterSet
Returns a new instance of FilterSet.
8 9 10 |
# File 'lib/data_filter/filter_set.rb', line 8 def initialize @filters = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class DataFilter::FilterSet::DSL
Instance Attribute Details
#filters ⇒ Object (readonly)
Returns the value of attribute filters.
6 7 8 |
# File 'lib/data_filter/filter_set.rb', line 6 def filters @filters end |
Instance Method Details
#add_filter(filter) ⇒ FilterSet
Add a filter to the filter set
18 19 20 21 |
# File 'lib/data_filter/filter_set.rb', line 18 def add_filter(filter) @filters << filter self end |
#batch(items) ⇒ Enumerable<Object>
Run the filter set on a collection of data items
37 38 39 |
# File 'lib/data_filter/filter_set.rb', line 37 def batch(items) items.select { |i| filter(i) } end |
#filter(item) ⇒ Object?
Run the filter set on a single data item
28 29 30 |
# File 'lib/data_filter/filter_set.rb', line 28 def filter(item) @filters.reduce(item) { |i, filter| i if filter.call(i) } end |