Sha256: afc5f31ac9b90d5f06bfb03fc7402a7c35878d4198bed31fead9bc07b4041f9a

Contents?: true

Size: 957 Bytes

Versions: 3

Compression:

Stored size: 957 Bytes

Contents

module Pione
  module Model
    class Constraints
      class << self
        # Return the empty constraints.
        #
        # @return [Constraints]
        #   empty constraints
        def empty
          new([])
        end
      end

      attr_reader :exprs

      # @param exprs [Array<BasicModel>]
      #   constraint expressions
      def initialize(exprs)
        @exprs = exprs
      end

      # Return true if constraints satisfied.
      #
      # @param vtable [VariableTable]
      #   variable table
      # @return [Boolean]
      #   true if constraints satisfied
      def satisfy?(vtable)
        @exprs.all? do |expr|
          res = expr.eval(vtable)
          res.kind_of?(BooleanSequence) and res.value
        end
      end

      def ==(other)
        return false unless other.kind_of?(self.class)
        @exprs == other.exprs
      end
      alias :eql? :"=="

      def hash
        @exprs.hash
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pione-0.2.2 lib/pione/model/constraints.rb
pione-0.2.1 lib/pione/model/constraints.rb
pione-0.2.0 lib/pione/model/constraints.rb