Module: Super::InlineCallback

Extended by:
ActiveSupport::Concern
Included in:
ApplicationController
Defined in:
lib/super/inline_callback.rb

Instance Method Summary collapse

Instance Method Details

#with_inline_callbacksObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/super/inline_callback.rb', line 58

def with_inline_callbacks
  action = params[:action].to_sym

  callbacks = self.class.inline_callbacks_for(action)

  each_node = -> (&b) { callbacks.each_key(&b) }
  each_child = -> (cb, &b) { callbacks[cb].each(&b) }

  yield_called = false

  TSort.tsort_each(each_node, each_child) do |callback|
    if callback == :yield
      yield_called = true
      yield
    else
      send(callback)
    end
  end

  if !yield_called
    yield
  end
end