Sha256: 9ac99db07be17d8a369c40a2de61941c5a9872f9eadec57b6b8351dae9bf42bb
Contents?: true
Size: 1.37 KB
Versions: 3
Compression:
Stored size: 1.37 KB
Contents
require 'dry/monads' module Datacaster class Result attr_accessor :meta include Dry::Monads[:result] def initialize(valid, value_or_errors, meta: nil) @value_or_errors = value_or_errors @valid = !!valid @meta = meta || {} end def valid? @valid end def value @valid ? @value_or_errors : nil end def errors unless @value_or_errors.is_a?(Hash) || @value_or_errors.is_a?(Array) @value_or_errors = Array(@value_or_errors) end @valid ? nil : @value_or_errors end def inspect if @valid "#<Datacaster::ValidResult(#{@value_or_errors.inspect})>" else "#<Datacaster::ErrorResult(#{@value_or_errors.inspect})>" end end def to_dry_result @valid ? Success(@value_or_errors) : Failure(@value_or_errors) end end def self.ValidResult(object, meta: nil) if object.is_a?(Result) raise "Can't create valid result from error #{object.inspect}" unless object.valid? object.meta = meta if meta object else Result.new(true, object, meta: meta) end end def self.ErrorResult(object, meta: nil) if object.is_a?(Result) raise "Can't create error result from valid #{object.inspect}" if object.valid? object.meta = meta if meta object else Result.new(false, object, meta: meta) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
datacaster-2.0.2 | lib/datacaster/result.rb |
datacaster-2.0.1 | lib/datacaster/result.rb |
datacaster-0.9.1 | lib/datacaster/result.rb |