22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/ruby_simple_search.rb', line 22
def simple_search(search_term, options={}, &block)
raise RubySimpleSearch::Errors::ATTRIBUTES_MISSING if @simple_search_attributes.blank?
raise ArgumentError, "Argument is not string" unless search_term.is_a? String
set_pattern(options[:pattern])
sql_query = nil
extended_query = nil
sql_query_condition = ""
sql_query_values = []
patterned_text = "#{@simple_search_pattern.gsub('q', search_term.try(:downcase))}"
@simple_search_attributes.each do |attr|
sql_query_condition << set_sql_query_condition(attr, sql_query_condition)
sql_query_values << patterned_text
end
if block.is_a? Proc
sql_query_condition = "(#{sql_query_condition})"
extended_query = block.call(search_term)
end
if !extended_query.nil?
sql_query_values, sql_query_condition = extend_simple_search(extended_query,
sql_query_condition,
sql_query_values)
end
sql_query = [sql_query_condition, sql_query_values]
where(sql_query.flatten)
end
|