Sha256: 3457f7ad945816c58791567996a3f95f814b90571b0663e524871e8cfb845a21

Contents?: true

Size: 901 Bytes

Versions: 2

Compression:

Stored size: 901 Bytes

Contents

require 'lotus/utils/kernel'

module Lotus
  module Validations
    # Coercions for attribute's values.
    #
    # @since 0.1.0
    # @api private
    module Coercions
      # Coerces the given values with the given type
      #
      # @param coercer [Class] the type
      # @param values [Array] of objects to be coerced
      # @param blk [Proc] an optional block to pass to the custom coercer
      #
      # @return [Object,nil] The result of the coercion, if possible
      #
      # @raise [ArgumentError] if the custom coercer's `#initialize` has a wrong arity.
      #
      # @since 0.1.0
      # @api private
      def self.coerce(coercer, *values, &blk)
        if ::Lotus::Utils::Kernel.respond_to?(coercer.to_s)
          ::Lotus::Utils::Kernel.__send__(coercer.to_s, *values, &blk) rescue nil
        else
          coercer.new(*values, &blk)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lotus-validations-0.2.1 lib/lotus/validations/coercions.rb
lotus-validations-0.2.0 lib/lotus/validations/coercions.rb