Implement a basic event dispatcher

This commit is contained in:
Thibault Jouan
2015-04-08 20:17:51 +00:00
parent 49fe77ddb1
commit 84ad217d5b
3 changed files with 72 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
require 'uh'
require 'uh/wm/cli'
require 'uh/wm/dispatcher'
require 'uh/wm/env'
require 'uh/wm/manager'
require 'uh/wm/runner'

27
lib/uh/wm/dispatcher.rb Normal file
View File

@@ -0,0 +1,27 @@
module Uh
module WM
class Dispatcher
attr_reader :hooks
def initialize hooks = Hash.new
@hooks = hooks
end
def [] *key
@hooks[translate_key key] or []
end
def on *key, &block
@hooks[translate_key key] ||= []
@hooks[translate_key key] << block
end
private
def translate_key key
key.one? ? key[0] : key
end
end
end
end