Module: Card::Set::Event::Callbacks

Included in:
Card::Set::Event
Defined in:
lib/card/set/event/callbacks.rb

Overview

handle card event callbacks

Instance Method Summary collapse

Instance Method Details

#set_event_callback(object_method, kind) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/card/set/event/callbacks.rb', line 14

def set_event_callback object_method, kind
  valid_event_callback kind, object_method do
    Card.class_exec(self) do |event|
      set_callback object_method, kind, event.name,
                   prepend: true, if: proc { |c| c.event_applies?(event) }
    end
  end
end

#set_event_callbacksObject



6
7
8
9
10
11
12
# File 'lib/card/set/event/callbacks.rb', line 6

def set_event_callbacks
  %i[before after around].each do |kind|
    next unless (object_method = @opts.delete kind)

    set_event_callback object_method, kind
  end
end

#valid_event_callback(kind, method) ⇒ Object



23
24
25
26
27
# File 'lib/card/set/event/callbacks.rb', line 23

def valid_event_callback kind, method
  yield
rescue NoMethodError
  raise "invalid event callback: `#{kind}: #{method}`"
end