Sha256: 9aeb73b733683d6ccdcb089cb831cbc2e2c31a7ae4ded2a3d693fe898dd2e741

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

require 'dry/validation/predicate_set'

module Dry
  module Validation
    module Predicates
      extend PredicateSet

      def self.included(other)
        super
        other.extend(PredicateSet)
        other.import(self)
      end

      predicate(:nil?) do |input|
        input.nil?
      end

      predicate(:key?) do |name, input|
        input.key?(name)
      end

      predicate(:empty?) do |input|
        case input
        when String, Array, Hash then input.empty?
        when nil then true
        else
          false
        end
      end

      predicate(:filled?) do |input|
        !self[:empty?].(input)
      end

      predicate(:int?) do |input|
        input.is_a?(Fixnum)
      end

      predicate(:str?) do |input|
        input.is_a?(String)
      end

      predicate(:lt?) do |num, input|
        input < num
      end

      predicate(:gt?) do |num, input|
        input > num
      end

      predicate(:lteq?) do |num, input|
        !self[:gt?].(num, input)
      end

      predicate(:gteq?) do |num, input|
        !self[:lt?].(num, input)
      end

      predicate(:size?) do |num, input|
        input.size == num
      end

      predicate(:min_size?) do |num, input|
        input.size >= num
      end

      predicate(:max_size?) do |num, input|
        input.size <= num
      end

      predicate(:inclusion?) do |list, input|
        list.include?(input)
      end

      predicate(:exclusion?) do |list, input|
        !self[:inclusion?].(list, input)
      end

      predicate(:eql?) do |left, right|
        left.eql?(right)
      end

      predicate(:format?) do |regex, input|
        !regex.match(input).nil?
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dry-validation-0.1.0 lib/dry/validation/predicates.rb