Class: MiniKraken::Core::SolverAdapter

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initialize(fib, &blk) ⇒ SolverAdapter

Constructor.

Parameters:

  • fib (#resume)

    A Fiber-like object



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.

Returns:

  • (#resume)

    A Fiber-like object as adaptee



13
14
15
# File 'lib/mini_kraken/core/solver_adapter.rb', line 13

def adaptee
  @adaptee
end

#around_resumeProc (readonly)

end

Returns:

  • (Proc)

    lambda to execute when resume is called



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

Parameters:

Returns:



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