Module: Hyperstack::Internal::Callbacks::ClassMethods
- Defined in:
- lib/hyperstack/internal/callbacks.rb
Instance Method Summary collapse
Instance Method Details
#callbacks_for(callback_name) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/hyperstack/internal/callbacks.rb', line 37 def callbacks_for(callback_name) wrapper_name = "_#{callback_name}_callbacks" if superclass.respond_to? :callbacks_for superclass.callbacks_for(callback_name) else [] end + send(wrapper_name) end |
#define_callback(callback_name, &after_define_hook) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/hyperstack/internal/callbacks.rb', line 24 def define_callback(callback_name, &after_define_hook) wrapper_name = "_#{callback_name}_callbacks" define_singleton_method(wrapper_name) do Context.set_var(self, "@#{wrapper_name}", force: true) { [] } end define_singleton_method(callback_name) do |*args, &block| send(wrapper_name).concat(args) send(wrapper_name).push(block) if block_given? Hotloader.record(self, "@#{wrapper_name}", 4, *args, block) after_define_hook.call(*args, &block) if after_define_hook end end |