class Datacaster::Caster
Public Class Methods
new(name, &block)
click to toggle source
# File lib/datacaster/caster.rb, line 3 def initialize(name, &block) raise "Expected block" unless block_given? @name = name @cast = block end
Public Instance Methods
call(object)
click to toggle source
Calls superclass method
Datacaster::Base#call
# File lib/datacaster/caster.rb, line 10 def call(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
inspect()
click to toggle source
# File lib/datacaster/caster.rb, line 26 def inspect "#<Datacaster::#{@name}Caster>" end