Class: MundaneSearch::Builder
- Inherits:
-
Object
- Object
- MundaneSearch::Builder
- Includes:
- Filters::Shortcuts
- Defined in:
- lib/mundane-search/builder.rb
Instance Attribute Summary collapse
-
#filter_canisters ⇒ Object
readonly
Returns the value of attribute filter_canisters.
Instance Method Summary collapse
- #call(collection, params = {}) ⇒ Object
-
#initialize(&block) ⇒ Builder
constructor
A new instance of Builder.
- #result_for(collection, params = {}) ⇒ Object
- #use(filter, *args, &block) ⇒ Object
Methods included from Filters::Shortcuts
Constructor Details
#initialize(&block) ⇒ Builder
Returns a new instance of Builder.
7 8 9 10 |
# File 'lib/mundane-search/builder.rb', line 7 def initialize(&block) @filter_canisters = [] instance_eval(&block) if block_given? end |
Instance Attribute Details
#filter_canisters ⇒ Object (readonly)
Returns the value of attribute filter_canisters.
30 31 32 |
# File 'lib/mundane-search/builder.rb', line 30 def filter_canisters @filter_canisters end |
Instance Method Details
#call(collection, params = {}) ⇒ Object
17 18 19 20 |
# File 'lib/mundane-search/builder.rb', line 17 def call(collection, params = {}) result = result_for(collection, params) result.collection end |
#result_for(collection, params = {}) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/mundane-search/builder.rb', line 22 def result_for(collection, params = {}) params ||= {} # tollerate nil initial_stack = InitialStack.new(collection, params) filter_canisters.inject(initial_stack) do |stack, canister| stack.add(canister) end end |
#use(filter, *args, &block) ⇒ Object
12 13 14 15 |
# File 'lib/mundane-search/builder.rb', line 12 def use(filter, *args, &block) filter = convert_filter(filter) @filter_canisters << build_filter_canister.call(filter, *args, &block) end |