lib/kind/result/monad.rb in kind-5.2.0 vs lib/kind/result/monad.rb in kind-5.3.0

- old
+ new

@@ -2,22 +2,25 @@ module Kind class Result::Monad include Result::Abstract + require 'kind/empty' require 'kind/result/monad/wrapper' attr_reader :type, :value - def self.[](arg1 = UNDEFINED, arg2 = UNDEFINED, value_must_be_a: nil) # :nodoc: - type = UNDEFINED == arg2 ? self::DEFAULT_TYPE : KIND.of!(::Symbol, arg1) + def self.[](arg1 = UNDEFINED, arg2 = UNDEFINED, opt = Empty::HASH) # :nodoc: + value_must_be_a = opt[:value_must_be_a] + type = UNDEFINED == arg2 ? self::DEFAULT_TYPE : STRICT.kind_of(::Symbol, arg1) + Error.wrong_number_of_args!(given: 0, expected: '1 or 2') if UNDEFINED == arg1 value = UNDEFINED == arg2 ? arg1 : arg2 - new(type, (value_must_be_a ? KIND.of!(value_must_be_a, value) : value)) + new(type, (value_must_be_a ? STRICT.kind_of(value_must_be_a, value) : value)) end private_class_method :new def initialize(type, value) @@ -27,13 +30,15 @@ def value_or(_method_name = UNDEFINED, &block) raise NotImplementedError end - def map(&_) + def map(_ = UNDEFINED, &_fn) raise NotImplementedError end + alias_method :|, :map + alias_method :>>, :map alias_method :map!, :map alias_method :then, :map alias_method :then!, :map alias_method :and_then, :map alias_method :and_then!, :map