class NxtStateMachine::Transition::AroundCallbackChain

Attributes

context[R]
state_machine[R]
transition[R]

Public Class Methods

new(transition, context, state_machine) click to toggle source
# File lib/nxt_state_machine/transition/around_callback_chain.rb, line 4
def initialize(transition, context, state_machine)
  @transition = transition
  @context = context
  @state_machine = state_machine
end

Public Instance Methods

build(proxy) click to toggle source
# File lib/nxt_state_machine/transition/around_callback_chain.rb, line 10
def build(proxy)
  return proxy unless callbacks.any?

  callbacks.map { |c| Callable.new(c).bind(context) }.reverse.inject(proxy) do |previous, callback|
    -> { callback.call(previous, transition) }
  end
end

Private Instance Methods

callbacks() click to toggle source
# File lib/nxt_state_machine/transition/around_callback_chain.rb, line 20
def callbacks
  @callbacks ||= state_machine.callbacks.resolve!(transition).kind(:around)
end