Sha256: ae202cbb52f5f780b03db4d875967a660133a88edebd5bc206d4b492dfbb4088

Contents?: true

Size: 514 Bytes

Versions: 2

Compression:

Stored size: 514 Bytes

Contents

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

      @name = name
      @error = error
      @check = block
    end

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

      if @check.(object)
        Datacaster.ValidResult(object)
      else
        Datacaster.ErrorResult([@error])
      end
    end

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

Version data entries

2 entries across 2 versions & 1 rubygems

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