Sha256: 5e2f8edce33ec4194dc6ac8c0d6982bfa155e7baf6fb1b07808e19de328f6c43

Contents?: true

Size: 730 Bytes

Versions: 1

Compression:

Stored size: 730 Bytes

Contents

module Rodakase
  module Transaction
    class Success
      attr_reader :value

      def initialize(value)
        @value = value
      end

      def fmap
        Success.new(yield(value))
      end

      def success?
        true
      end

      def failure?
        false
      end
    end

    class Failure
      attr_reader :code, :error
      alias_method :value, :error

      def initialize(*args)
        @code, @error = args
      end

      def fmap
        self
      end

      def success?
        false
      end

      def failure?
        true
      end
    end

    def self.Failure(code, error)
      Failure.new(code, error)
    end

    def self.Success(value)
      Success.new(value)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rodakase-0.0.1 lib/rodakase/transaction/result.rb