module Termtter::Hookable
Attributes
hooks[R]
Public Class Methods
call_hooks(point, *args)
click to toggle source
return last hook return value
# File lib/termtter/hookable.rb, line 52 def call_hooks(point, *args) Termtter::Client.logger.debug { "call_hooks: [:point => #{point}, :args => [#{args.map {|a| a.inspect.each_char.take(11).join}.join(', ')}]]" } result = nil get_hooks(point).each {|hook| break if result == false # interrupt if hook return false Termtter::Client.logger.debug { "call_hooks: #{point} #{hook.inspect}" } result = hook.call(*args) } Termtter::Client.logger.debug { "call_hooks: [:point => #{point}, :args => [#{args.map {|a| a.inspect.each_char.take(11).join}.join(', ')}]], done" } result end
clear_hooks()
click to toggle source
# File lib/termtter/hookable.rb, line 64 def clear_hooks hooks.clear end
get_hook(name)
click to toggle source
# File lib/termtter/hookable.rb, line 40 def get_hook(name) hooks[name] end
get_hooks(point)
click to toggle source
# File lib/termtter/hookable.rb, line 44 def get_hooks(point) # TODO: sort by alphabet hooks.values.select do |hook| hook.match?(point) end end
included(base)
click to toggle source
# File lib/termtter/hookable.rb, line 12 def self.included(base) base.class_eval do @hooks = {} class << self attr_reader :hooks def register_hook(arg, opts = {}, &block) hook = case arg when Hook arg when Hash Hook.new(arg) when String, Symbol options = { :name => arg } options.merge!(opts) options[:exec_proc] = block Hook.new(options) else raise ArgumentError, 'must be given Termtter::Hook, Hash, String or Symbol' end hooks[hook.name] = hook end def remove_hook(name) hooks.delete(name.to_sym) end def get_hook(name) hooks[name] end def get_hooks(point) # TODO: sort by alphabet hooks.values.select do |hook| hook.match?(point) end end # return last hook return value def call_hooks(point, *args) Termtter::Client.logger.debug { "call_hooks: [:point => #{point}, :args => [#{args.map {|a| a.inspect.each_char.take(11).join}.join(', ')}]]" } result = nil get_hooks(point).each {|hook| break if result == false # interrupt if hook return false Termtter::Client.logger.debug { "call_hooks: #{point} #{hook.inspect}" } result = hook.call(*args) } Termtter::Client.logger.debug { "call_hooks: [:point => #{point}, :args => [#{args.map {|a| a.inspect.each_char.take(11).join}.join(', ')}]], done" } result end def clear_hooks hooks.clear end end end end
register_hook(arg, opts = {}, &block)
click to toggle source
# File lib/termtter/hookable.rb, line 19 def register_hook(arg, opts = {}, &block) hook = case arg when Hook arg when Hash Hook.new(arg) when String, Symbol options = { :name => arg } options.merge!(opts) options[:exec_proc] = block Hook.new(options) else raise ArgumentError, 'must be given Termtter::Hook, Hash, String or Symbol' end hooks[hook.name] = hook end
remove_hook(name)
click to toggle source
# File lib/termtter/hookable.rb, line 36 def remove_hook(name) hooks.delete(name.to_sym) end