Sha256: 133ab1f409b34b6d3d65df3e845a9d887d1bbf60c69ae59ed9f1d5c0590f5bb8

Contents?: true

Size: 668 Bytes

Versions: 50

Compression:

Stored size: 668 Bytes

Contents

# frozen_string_literal: true

module Ree::Contracts
  module ArgContracts
    class Or
      extend Ree::Contracts::ArgContracts::Squarable
      include Ree::Contracts::Truncatable

      attr_reader :validators

      def initialize(*contracts)
        @validators = contracts.map(&Validators.method(:fetch_for))
      end

      def to_s
        "Or[#{validators.map(&:to_s).join(', ')}]"
      end

      def valid?(value)
        validators.any? do |validator|
          validator.call(value)
        end
      end

      def message(value, name, lvl = 1)
        "expected #{truncate(self.to_s, 30)}, got #{truncate(value.inspect)}"
      end
    end
  end
end

Version data entries

50 entries across 50 versions & 1 rubygems

Version Path
ree-1.1.1 lib/ree/contracts/arg_contracts/or.rb
ree-1.1.0 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.47 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.46 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.45 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.44 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.43 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.42 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.41 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.40 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.39 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.38 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.37 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.36 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.35 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.34 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.33 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.32 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.31 lib/ree/contracts/arg_contracts/or.rb
ree-1.0.30 lib/ree/contracts/arg_contracts/or.rb