Class: Tire::Search::BooleanQuery

Inherits:
Object
  • Object
show all
Defined in:
lib/tire/search/query.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, &block) ⇒ BooleanQuery

TODO: Try to get rid of multiple should, must, etc invocations, and wrap queries directly:

  boolean do
    should do
      string 'foo'
      string 'bar'
    end
  end

Inherit from Query, implement encode method there, and overload it here, so it puts queries in an Array instead of hash.


131
132
133
134
135
# File 'lib/tire/search/query.rb', line 131

def initialize(options={}, &block)
  @options = options
  @value   = {}
  block.arity < 1 ? self.instance_eval(&block) : block.call(self) if block_given?
end

Instance Method Details

#must(&block) ⇒ Object


137
138
139
140
# File 'lib/tire/search/query.rb', line 137

def must(&block)
  (@value[:must] ||= []) << Query.new(&block).to_hash
  @value
end

#must_not(&block) ⇒ Object


142
143
144
145
# File 'lib/tire/search/query.rb', line 142

def must_not(&block)
  (@value[:must_not] ||= []) << Query.new(&block).to_hash
  @value
end

#should(&block) ⇒ Object


147
148
149
150
# File 'lib/tire/search/query.rb', line 147

def should(&block)
  (@value[:should] ||= []) << Query.new(&block).to_hash
  @value
end

#to_hashObject


152
153
154
# File 'lib/tire/search/query.rb', line 152

def to_hash
  @value.update(@options)
end