module ParamsReady::Builder::GroupingLike

Public Instance Methods

add_predicate(name_or_definition, *args, **opts, &block) click to toggle source
# File lib/params_ready/query/grouping.rb, line 37
def add_predicate(name_or_definition, *args, **opts, &block)
  if name_or_definition.is_a? Parameter::AbstractDefinition
    @definition.add_predicate name_or_definition
    add name_or_definition
  else
    builder = predicate_builder(name_or_definition).instance *args, **opts
    build_predicate builder, &block
  end
end
build_predicate(builder, &proc) click to toggle source
# File lib/params_ready/query/grouping.rb, line 31
def build_predicate(builder, &proc)
  builder.instance_eval(&proc)
  definition = builder.build
  add_predicate definition
end
method_missing(name, *args, **opts, &proc) click to toggle source
Calls superclass method
# File lib/params_ready/query/grouping.rb, line 15
def method_missing(name, *args, **opts, &proc)
  builder_class = predicate_builder(name)
  if builder_class
    builder = builder_class.instance *args, **opts
    build_predicate builder, &proc
  else
    super
  end
end
operator(&block) click to toggle source
# File lib/params_ready/query/grouping.rb, line 47
def operator(&block)
  definition = Builder.define_grouping_operator(:operator, altn: :op, &block)
  add definition
end
predicate_builder(name) click to toggle source
# File lib/params_ready/query/grouping.rb, line 8
def predicate_builder(name)
  symbol = name.to_sym
  return nil unless Query::PredicateRegistry.has_predicate?(symbol)

  Query::PredicateRegistry.predicate(symbol)
end
respond_to_missing?(name, include_private = false) click to toggle source
Calls superclass method
# File lib/params_ready/query/grouping.rb, line 25
def respond_to_missing?(name, include_private = false)
  return true unless predicate_builder(name).nil?

  super
end