Sha256: fc29ddc7dd1baa649c44508ed8445b9346ff2093a8516a493e6e60f1e7a0bbfb
Contents?: true
Size: 905 Bytes
Versions: 2
Compression:
Stored size: 905 Bytes
Contents
# typed: strict # frozen_string_literal: true module Muina # Result Monad class Result < Value # Typed Results Factory. class Factory < T::Struct prop :success_klass, T.any(Classes, T::Types::Base) prop :error_klass, T.any(Classes, T::Types::Base) def success(value) success_subclass.__send__(:new, value: value) end def failure(error) failure_subclass.__send__(:new, error: error) end private def success_subclass klass_factory(Success, :value, success_klass) end def failure_subclass klass_factory(Failure, :error, error_klass) end def klass_factory(klass, symbol, sklass) iklass = T.unsafe(Class.new(klass)) # rubocop:disable Sorbet/ForbidTUnsafe iklass.const symbol, sklass, override: true iklass.__send__(:private, symbol) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
muina-0.2.8 | lib/muina/result/factory.rb |
muina-0.2.7 | lib/muina/result/factory.rb |