class SearchEnjoy::Searching::Comparator
Public Class Methods
new(conditions)
click to toggle source
# File lib/search_enjoy/searching.rb, line 15 def initialize(conditions) if conditions.instance_of? Query conditions = conditions.to_hash end @conditions = conditions end
Public Instance Methods
check_condition(condition_subject, condition_body)
click to toggle source
# File lib/search_enjoy/searching.rb, line 58 def check_condition(condition_subject, condition_body) if condition_body.instance_of? Hash compare(condition_subject, condition_body) elsif condition_body.instance_of? Array condition_body.include? condition_subject else condition_subject == condition_body end end
check_must_conditions(subject, conditions)
click to toggle source
# File lib/search_enjoy/searching.rb, line 30 def check_must_conditions(subject, conditions) conditions.each_pair do |attr, condition| next unless condition[:must] result = check_condition(subject[attr], condition[:value]) result = !result if condition[:inverse] return false unless result end true end
check_should_conditions(subject, conditions)
click to toggle source
# File lib/search_enjoy/searching.rb, line 44 def check_should_conditions(subject, conditions) conditions.each_pair do |attr, condition| next if condition[:must] result = check_condition(subject[attr], condition[:value]) result = !result if condition[:inverse] return true if result end false end
compare(subject, conditions = @conditions)
click to toggle source
# File lib/search_enjoy/searching.rb, line 23 def compare(subject, conditions = @conditions) return false unless check_must_conditions(subject, conditions) return false unless check_should_conditions(subject, conditions) true end