Sha256: ede7d49a916165e438096adb4bdcbb9cedb9fedfb15ad011f4526a3a0b87afef
Contents?: true
Size: 774 Bytes
Versions: 2
Compression:
Stored size: 774 Bytes
Contents
module Datacaster class Caster < Base def initialize(name, &block) raise "Expected block" unless block_given? @name = name @cast = block end def cast(object) intermediary_result = super(object) object = intermediary_result.value result = @cast.(object) raise TypeError.new("Either Datacaster::Result or Dry::Monads::Result " \ "should be returned from cast block") unless [Datacaster::Result, Dry::Monads::Result].any? { |k| result.is_a?(k) } if result.is_a?(Dry::Monads::Result) result = result.success? ? Datacaster.ValidResult(result.value!) : Datacaster.ErrorResult(result.failure) end result end def inspect "#<Datacaster::#{@name}Caster>" end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
datacaster-2.0.2 | lib/datacaster/caster.rb |
datacaster-2.0.1 | lib/datacaster/caster.rb |