lib/bcdd/result/context/mixin.rb in bcdd-result-0.8.0 vs lib/bcdd/result/context/mixin.rb in bcdd-result-0.9.0

- old
+ new

@@ -4,21 +4,29 @@ module Mixin Factory = BCDD::Result::Mixin::Factory module Methods def Success(type, **value) - Success.new(type: type, value: value, subject: self) + _ResultAs(Success, type, value) end def Failure(type, **value) - Failure.new(type: type, value: value, subject: self) + _ResultAs(Failure, type, value) end + + private def _ResultAs(kind_class, type, value, halted: nil) + kind_class.new(type: type, value: value, subject: self, halted: halted) + end end module Addons module Continuable + def Success(type, **value) + _ResultAs(Success, type, value, halted: true) + end + private def Continue(**value) - Success.new(type: :continued, value: value, subject: self) + _ResultAs(Success, :continued, value) end end OPTIONS = { continue: Continuable }.freeze