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