Sha256: 3a58a42537560313fddc447fdb951be94cd43ddc99dcb017501770436e303379

Contents?: true

Size: 813 Bytes

Versions: 43

Compression:

Stored size: 813 Bytes

Contents

class Card
  module Set
    class Event
      module Callbacks
        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

        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

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

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
card-1.108.1 lib/card/set/event/callbacks.rb
card-1.108.0 lib/card/set/event/callbacks.rb
card-1.107.0 lib/card/set/event/callbacks.rb
card-1.106.0 lib/card/set/event/callbacks.rb
card-1.105.6 lib/card/set/event/callbacks.rb
card-1.105.5 lib/card/set/event/callbacks.rb
card-1.105.4 lib/card/set/event/callbacks.rb
card-1.105.3 lib/card/set/event/callbacks.rb
card-1.105.2.pre1 lib/card/set/event/callbacks.rb
card-1.105.2 lib/card/set/event/callbacks.rb
card-1.105.1 lib/card/set/event/callbacks.rb
card-1.105.0 lib/card/set/event/callbacks.rb
card-1.104.2 lib/card/set/event/callbacks.rb
card-1.104.1 lib/card/set/event/callbacks.rb
card-1.104.0 lib/card/set/event/callbacks.rb
card-1.103.4 lib/card/set/event/callbacks.rb
card-1.103.3 lib/card/set/event/callbacks.rb
card-1.103.2 lib/card/set/event/callbacks.rb
card-1.103.1 lib/card/set/event/callbacks.rb
card-1.103.0 lib/card/set/event/callbacks.rb