lib/haku/core.rb in haku-1.3.1 vs lib/haku/core.rb in haku-1.4.0

- old
+ new

@@ -12,10 +12,11 @@ prepend Callable attr_reader :params class_attribute :haku_inputs, default: [] + class_attribute :haku_before_call_callbacks, default: [] class_attribute :haku_success_callbacks, default: [] class_attribute :haku_failure_callbacks, default: [] end module ClassMethods @@ -33,10 +34,14 @@ def input(*names) self.haku_inputs += names end + def before_call(*methods) + self.haku_before_call_callbacks += methods + end + def on_success(*methods) self.haku_success_callbacks += methods end def on_failure(*methods) @@ -46,17 +51,20 @@ Finish = Struct.new("Finish", :status, :payload) module Callable def call - response = catch(:finish) { super } + response = catch(:finish) do + (self.class.send(:haku_before_call_callbacks) || []).each { |cb| send(cb) } + super + end status = response.is_a?(Finish) ? response.status : :success payload = response.is_a?(Finish) ? response.payload : response Result.new(status, payload).tap do - _haku_run_callbacks(status) + haku_run_callbacks(status) end end end def initialize(params={}) @@ -75,10 +83,10 @@ def failure!(data=nil) throw :finish, Finish.new(:failure, data) end - def _haku_run_callbacks(status) + def haku_run_callbacks(status) (self.class.send("haku_#{status}_callbacks") || []).each { |cb| send(cb) } end end end