Class: MundaneSearch::Builder

Inherits:
Object
  • Object
show all
Includes:
Filters::Shortcuts
Defined in:
lib/mundane-search/builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Filters::Shortcuts

#employ

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_canistersObject (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