Sha256: 896d031947b2b572ca5fbdb446c209eb52bbbb05df022d4c7a359e9f022b383a

Contents?: true

Size: 527 Bytes

Versions: 2

Compression:

Stored size: 527 Bytes

Contents

module Virtus
  class Attribute

    # Attribute extension which raises CoercionError when coercion failed
    #
    module Strict

      # @see [Attribute#coerce]
      #
      # @raises [CoercionError] when coercer failed
      #
      # @api public
      def coerce(*)
        output = super

        if coercer.success?(primitive, output) || !required? && output.nil?
          output
        else
          raise CoercionError.new(output, primitive)
        end
      end

    end # Strict

  end # Attribute
end # Virtus

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
virtus-1.0.0 lib/virtus/attribute/strict.rb
virtus-1.0.0.rc2 lib/virtus/attribute/strict.rb