holywyvern/carbuncle

View on GitHub
gems/carbuncle-gui/mrblib/003_events.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Carbuncle
  class GUI
    class Events
      def initialize
        @handlers = {}
      end

      def [](name)
        @handlers[name] ||= []
      end

      def add(name, callback)
        self[name].push(callback)
      end

      def remove(name, callback)
        self[name].remove(callback)
      end

      def clear(name)
        @handlers[name] = []
      end

      def call(name)
        self[name].each(&:call)
      end
    end
  end
end