Class: MiniKraken::Core::SolverAdapter
- Inherits:
-
Object
- Object
- MiniKraken::Core::SolverAdapter
- Defined in:
- lib/mini_kraken/core/solver_adapter.rb
Overview
A wrapper around a “solver” object. A solver in MiniKraken is Fiber or an object that quacks like a Fiber in that its has a ‘resume’ method. To be a solver, the adaptee object must yield a Context or nil. A SolverAdapter implements a customized resume method that acts as an “execute around” method for the adaptee’s ´resume´ method.
Instance Attribute Summary collapse
-
#adaptee ⇒ #resume
readonly
A Fiber-like object as adaptee.
-
#around_resume ⇒ Proc
readonly
end.
Instance Method Summary collapse
-
#initialize(fib, &blk) ⇒ SolverAdapter
constructor
Constructor.
-
#resume(aContext) ⇒ Core::Context, NilClass
Update the bookmarks and resume the Fiber.
Constructor Details
#initialize(fib, &blk) ⇒ SolverAdapter
Constructor.
26 27 28 29 |
# File 'lib/mini_kraken/core/solver_adapter.rb', line 26 def initialize(fib, &blk) @adaptee = validated_adaptee(fib) @around_resume = blk if block_given? end |
Instance Attribute Details
#adaptee ⇒ #resume (readonly)
Returns A Fiber-like object as adaptee.
13 14 15 |
# File 'lib/mini_kraken/core/solver_adapter.rb', line 13 def adaptee @adaptee end |
#around_resume ⇒ Proc (readonly)
end
22 23 24 |
# File 'lib/mini_kraken/core/solver_adapter.rb', line 22 def around_resume @around_resume end |
Instance Method Details
#resume(aContext) ⇒ Core::Context, NilClass
Update the bookmarks and resume the Fiber
34 35 36 37 38 39 40 41 |
# File 'lib/mini_kraken/core/solver_adapter.rb', line 34 def resume(aContext) ctx = validated_ctx(aContext) if around_resume around_resume.call(self, ctx) else adaptee.resume end end |