class ParamsReady::Query::PredicateRegistry

Public Class Methods

find_operator(identifier, format, collision_check) click to toggle source
# File lib/params_ready/query/predicate.rb, line 175
def self.find_operator(identifier, format, collision_check)
  operator = operator_by(identifier, format)
  if operator.nil?
    name_as_string = identifier.to_s
    invertor = if format.alternative?
      'n_'
    else
      'not_'
    end
    if !collision_check && name_as_string.start_with?(invertor)
      bare_name = name_as_string[invertor.length..-1].to_sym
      inverted = PredicateRegistry.operator(bare_name, format)
      if inverted.nil?
        nil
      elsif inverted.inverse_of.nil?
        Not.new(inverted)
      else
        operator(inverted.inverse_of, format)
      end
    else
      nil
    end
  else
    operator
  end
end
operator(identifier, format, collision_check = false) click to toggle source
# File lib/params_ready/query/predicate.rb, line 166
def self.operator(identifier, format, collision_check = false)
  operator = find_operator(identifier, format, collision_check)
  if operator.nil? && !collision_check
    raise("No such operator: #{identifier}")
  end

  operator
end
operator_by(identifier, format) click to toggle source
# File lib/params_ready/query/predicate.rb, line 158
def self.operator_by(identifier, format)
  if format.alternative?
    @@operator_alt_names[identifier]
  else
    @@operator_names[identifier]
  end
end