class NoBrainer::Criteria::Where::MultiOperator
Public Instance Methods
simplify()
click to toggle source
# File lib/no_brainer/criteria/where.rb, line 47 def simplify clauses = self.clauses.map(&:simplify) if clauses.size == 1 && clauses.first.is_a?(self.class) return clauses.first end same_op_clauses, other_clauses = clauses.partition do |v| v.is_a?(self.class) && (v.clauses.size == 1 || v.op == self.op) end simplified_clauses = other_clauses + same_op_clauses.flat_map(&:clauses) simplified_clauses = BinaryOperator.simplify_clauses(op, simplified_clauses.uniq) self.class.new(op, simplified_clauses) end
to_rql(doc)
click to toggle source
# File lib/no_brainer/criteria/where.rb, line 61 def to_rql(doc) case op when :and then clauses.map { |c| c.to_rql(doc) }.reduce(:&) when :or then clauses.map { |c| c.to_rql(doc) }.reduce(:|) end end