phlegx/redlics

View on GitHub
lib/redlics/operators.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Redlics
  # Operators namespace
  module Operators
    # AND (&) operator.
    #
    # @param query [Redlics::Query] Redlics query object
    # @return [Redlics::Query::Operation] a Redlics query operation object
    def &(query)
      Query::Operation.new('AND', [self, query])
    end

    # OR (|) operator.
    #
    # @param query [Redlics::Query] Redlics query object
    # @return [Redlics::Query::Operation] a Redlics query operation object
    def |(query)
      Query::Operation.new('OR', [self, query])
    end
    alias_method :+, :|

    # XOR (^) operator.
    #
    # @param query [Redlics::Query] Redlics query object
    # @return [Redlics::Query::Operation] a Redlics query operation object
    def ^(query)
      Query::Operation.new('XOR', [self, query])
    end

    # NOT (-, ~) operator.
    # @return [Redlics::Query::Operation] a Redlics query operation object
    def -@()
      Query::Operation.new('NOT', [self])
    end
    alias_method :~@, :-@

    # MINUS (-) operator.
    #
    # @param query [Redlics::Query] Redlics query object
    # @return [Redlics::Query::Operation] a Redlics query operation object
    def -(query)
      Query::Operation.new('MINUS', [self, query])
    end
  end
end