Sha256: d659721025b96f9c3d865ee87d9b21883ba6a76e62a945ad11db65f5dcbadc53

Contents?: true

Size: 613 Bytes

Versions: 1

Compression:

Stored size: 613 Bytes

Contents

module Compel

  module Coercion

    def valid?(value, type, options = {})
      !!coerce!(value, type, options) rescue false
    end

    def coerce!(value, type, options = {})
      return nil if value.nil?

      begin
        coercion_klass(type).new(value, options).coerce!
      rescue Compel::TypeError => exception
        raise exception
      rescue
        type_split = "#{type}".split('::')

        raise Compel::TypeError, "'#{value}' is not a valid #{type_split[-1]}"
      end
    end

    def coercion_klass(type)
      Compel::Coercion.const_get("#{type}")
    end

    extend self

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
compel-0.2.0 lib/compel/coercion.rb