module XRBP::HasPlugin
Helper mixin provding plugin management capabilities.
@private
Public Instance Methods
add_plugin(*plgs)
click to toggle source
# File lib/xrbp/plugins/has_plugin.rb, line 15 def add_plugin(*plgs) plgs.each { |plg| plg = plugin_namespace.plugins[plg] if plg.is_a?(Symbol) raise ArgumentError unless !!plg plg = plg.new(self) plugins << plg plg.added if plg.respond_to?(:added) } end
define_instance_method(name, &block)
click to toggle source
# File lib/xrbp/plugins/has_plugin.rb, line 39 def define_instance_method(name, &block) (class << self; self; end).class_eval do define_method name, &block end end
plugin(plg)
click to toggle source
# File lib/xrbp/plugins/has_plugin.rb, line 31 def plugin(plg) cls = plugin_namespace.plugins[plg] plugins.find { |_plg| (plg.is_a?(Class) && _plg.kind_of?(plg)) || (cls.is_a?(Class) && _plg.kind_of?(cls)) } end
plugin?(plg)
click to toggle source
# File lib/xrbp/plugins/has_plugin.rb, line 25 def plugin?(plg) clss = plugins.collect { |plg| plg.class } cls = plugin_namespace.plugins[plg] clss.include?(plg) || clss.include?(cls) end
plugin_namespace()
click to toggle source
should be overridden
# File lib/xrbp/plugins/has_plugin.rb, line 7 def plugin_namespace raise end
plugins()
click to toggle source
# File lib/xrbp/plugins/has_plugin.rb, line 11 def plugins @plugins ||= [] end