Sha256: 33748ded0c74e0c7226d56d9565f4bfd523c1f5108663e3064fdf8b8f6d33df7
Contents?: true
Size: 1.37 KB
Versions: 1
Compression:
Stored size: 1.37 KB
Contents
# frozen_string_literal: true module Fluxo class Result attr_reader :operation, :type, :value attr_accessor :ids # @param options [Hash] # @option options [Fluxo::Operation] :operation The operation instance that gererated this result # @option options [symbol] :type The type of the result. Allowed types: :ok, :failure, :exception # @option options [Any] :value The value of the result. # @option options [Array<symbol>] :ids An identification to be used with the on_<success|failure|error> handlers def initialize(operation:, type:, value:, ids: nil) @operation = operation @value = value @type = type @ids = Array(ids) end # @return [Boolean] true if the result is a success def success? type == :ok end # @return [Boolean] true if the result is a failure def failure? type == :failure end # @return [Boolean] true if the result is an exception def error? type == :exception end def on_success(*handler_ids) tap { yield(self) if success? && (handler_ids.none? || (ids & handler_ids).any?) } end def on_failure(*handler_ids) tap { yield(self) if failure? && (handler_ids.none? || (ids & handler_ids).any?) } end def on_error(*handler_ids) tap { yield(self) if error? && (handler_ids.none? || (ids & handler_ids).any?) } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fluxo-0.2.0 | lib/fluxo/result.rb |