Sha256: 8d3a9fcbdf2d2648cdcfa74d6241b5c990acd240e38dbbf30a74198123953a6d

Contents?: true

Size: 528 Bytes

Versions: 5

Compression:

Stored size: 528 Bytes

Contents

require 'set'

module UV
  module Listener
    private
    def callbacks
      @callbacks ||= Set.new
    end

    def callback(name)
      const_name = "#{name.upcase}_#{object_id}"
      unless self.class.const_defined?(const_name)
        callbacks << const_name
        self.class.const_set(const_name, method(name))
      end
      self.class.const_get(const_name)
    end

    def clear_callbacks
      callbacks.each do |name|
        self.class.send(:remove_const, name)
      end
      callbacks.clear
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
uvrb-0.1.4 lib/uv/listener.rb
uvrb-0.1.3 lib/uv/listener.rb
uvrb-0.1.2 lib/uv/listener.rb
uvrb-0.1.1 lib/uv/listener.rb
uvrb-0.1.0 lib/uv/listener.rb