Sha256: 68cff48905b140ca5bd66446ef5d06b4c448048d5a264c231d362abc52c978f3

Contents?: true

Size: 607 Bytes

Versions: 2

Compression:

Stored size: 607 Bytes

Contents

module Datacaster
  class Trier < Base
    def initialize(name, error, catched_exception, &block)
      raise "Expected block" unless block_given?

      @name = name
      @error = error
      @catched_exception = Array(catched_exception)
      @transform = block
    end

    def cast(object)
      intermediary_result = super(object)
      object = intermediary_result.value

      begin
        Datacaster.ValidResult(@transform.(object))
      rescue *@catched_exception
        Datacaster.ErrorResult([@error])
      end
    end

    def inspect
      "#<Datacaster::#{@name}Trier>"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
datacaster-2.0.2 lib/datacaster/trier.rb
datacaster-2.0.1 lib/datacaster/trier.rb