Sha256: 2272473b0cea0cc24d9a19df43ddda08a0e29b46c936252c683b9a945a4320e0
Contents?: true
Size: 1.53 KB
Versions: 3
Compression:
Stored size: 1.53 KB
Contents
require 'criteria_operator/base_operator' module CriteriaOperator # Enum representing all possible types for a {GroupOperator}. module GroupOperatorType # with this type, a {GroupOperator} will check that all grouped operands are true AND = 1 # with this type, a {GroupOperator} will check that at least one of the grouped operands is true OR = 2 end # Operator that groups multiple operators using one grouping type. class GroupOperator < BaseOperator # @return [GroupOperatorType] the type of this operator attr_accessor :operator_type # @return [Array<BaseOperator>] the collection of operands grouped by this operator attr_accessor :operand_collection # The constructor for this operator. Expects a collection of operands and the operator type as parameters. # @param [Array<BaseOperator>] operands a collection of operands to group together # @param [GroupOperatorType] group_operator_type the type of this operator # @return [Void] def initialize(operands = [], group_operator_type = GroupOperatorType::AND) self.operand_collection = operands self.operator_type = group_operator_type end # Clones an operator with all sub-operators, creating a deep copy. # Implementation of the abstract {BaseOperator#clone}. # @return [GroupOperator] the cloned operator def clone ops = [] self.operand_collection.each { |op| ops << clone_or_nil(op) } GroupOperator.new ops, self.operator_type end end end
Version data entries
3 entries across 3 versions & 1 rubygems