Sha256: 53a2514aeb1e7c0ef5341083c99790a65c5672d38867a790506e2566bfa6a9d9

Contents?: true

Size: 713 Bytes

Versions: 8

Compression:

Stored size: 713 Bytes

Contents

module Gumdrop
  module Callbacks
    
    # For defining callbacks
    def callback(*callback_names)
      callback_names.each do |name|
        class_eval <<-EOF
          def #{name}(*args, &block)
            if block
              @_#{name} = [] if @_#{name}.nil?
              @_#{name} << block
            elsif @_#{name} and !@_#{name}.nil?
              @_#{name}.each do |cb|
                cb.call(*args)
              end
            end
          end
          def clear_#{name}()
            @_#{name} = nil
          end
        EOF
      end
    end
  
    alias_method :callbacks, :callback
    alias_method :define_callback, :callback
    alias_method :define_callbacks, :callback
  
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
gumdrop-0.7.5 lib/gumdrop/callbacks.rb
gumdrop-0.7.4 lib/gumdrop/callbacks.rb
gumdrop-0.7.3.1 lib/gumdrop/callbacks.rb
gumdrop-0.7.3 lib/gumdrop/callbacks.rb
gumdrop-0.7.2 lib/gumdrop/callbacks.rb
gumdrop-0.7.1 lib/gumdrop/callbacks.rb
gumdrop-0.7.0 lib/gumdrop/callbacks.rb
gumdrop-0.6.4 lib/gumdrop/callbacks.rb