class Homerun::Instruction
Attributes
ctx[R]
steps[R]
Public Class Methods
call(_ctx) { |ctx| ... }
click to toggle source
# File lib/homerun.rb, line 36 def self.call(_ctx) instance.set_ctx(_ctx) cur = 0 while cur < instance.steps.count do step = instance.steps[cur] pos = ->(_name) { instance.steps.index(instance.steps.find { |x| x[:name] == _name }) } if step[:item].call(instance.ctx) if step[:success] cur = pos.call(step[:success]) next else cur += 1 end else if step[:failure] cur = pos.call(step[:failure]) next else instance.set_pass(false) cur = instance.steps.count end end end if block_given? yield(instance.ctx) if instance.ctx[:_pass] end instance.ctx end
new()
click to toggle source
Calls superclass method
# File lib/homerun.rb, line 13 def initialize super @steps = [] @ctx = { _pass: true } end
step(item, failure: nil, success: nil, name: nil)
click to toggle source
# File lib/homerun.rb, line 32 def self.step(item, failure: nil, success: nil, name: nil) instance.add_step({ item: item, failure: failure, success: success, name: name }) end
Public Instance Methods
add_step(step)
click to toggle source
# File lib/homerun.rb, line 20 def add_step(step) @steps << step end
set_ctx(_ctx)
click to toggle source
# File lib/homerun.rb, line 24 def set_ctx(_ctx) @ctx = { **ctx, **_ctx } end
set_pass(val)
click to toggle source
# File lib/homerun.rb, line 28 def set_pass(val) @ctx[:_pass] = val end