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