Sha256: 397b22e14fffaaba4fd11303cd8af3d3c54beda95f1379ab343d3df6a4e75fee

Contents?: true

Size: 667 Bytes

Versions: 7

Compression:

Stored size: 667 Bytes

Contents

module Larynx
  module Callbacks

    def self.included(base)
      base.extend ClassMethods
      base.class_eval do
        include InstanceMethods
      end
    end

    module ClassMethods
      def define_callback(*callbacks)
        callbacks.each do |callback|
          class_eval <<-DEF
            def #{callback}(&block)
              @callbacks ||= {}
              @callbacks[:#{callback}] = block
              self
            end
          DEF
        end
      end
    end

    module InstanceMethods
      def fire_callback(callback, *args)
        @callbacks && @callbacks[callback] && @callbacks[callback].call(*args)
      end
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
larynx-0.1.6 lib/larynx/callbacks.rb
larynx-0.1.5 lib/larynx/callbacks.rb
larynx-0.1.4 lib/larynx/callbacks.rb
larynx-0.1.3 lib/larynx/callbacks.rb
larynx-0.1.2 lib/larynx/callbacks.rb
larynx-0.1.1 lib/larynx/callbacks.rb
larynx-0.1.0 lib/larynx/callbacks.rb