module Vizkit::PluginAccessorCommon
Implements the accessors for plugins if a plugin called “vizkit::Viz” or “vizkit.Viz” is added it can be accessed via plugin_accessor.vizkit.Viz and is stored as plugin_accessor.plugin_specs and plugin_specs.vizkit.plugin_specs
Public Instance Methods
add_plugin_spec(spec,name=spec.plugin_name)
click to toggle source
# File lib/vizkit/plugin_accessor.rb, line 16 def add_plugin_spec(spec,name=spec.plugin_name) @plugin_specs[name] = spec names = name.sub(/::/,".").split(".") if names.size > 1 accessor = if self.respond_to? names.first self.send(names.first) else accessor = PluginAccessor.new(names.first) accessor.instance_variable_set(:@uiloader,@uiloader||self) instance_variable_set("@#{names.first}",accessor) (class << self;self;end).send(:define_method,names.first) do instance_variable_get("@#{names.first}") end accessor end name = names[1..-1].join(".") accessor.add_plugin_spec(spec,name) else (class << self;self;end).send(:define_method,name) do |*parent| reuse = if parent.size >= 2 parent[1] else false end (@uiloader||self).create_plugin(spec.plugin_name,parent.first,reuse) end end spec end
available_plugins()
click to toggle source
# File lib/vizkit/plugin_accessor.rb, line 7 def available_plugins @plugin_specs.keys end
plugin?(class_name)
click to toggle source
# File lib/vizkit/plugin_accessor.rb, line 11 def plugin?(class_name) class_name = PluginHelper.normalize_obj(class_name,false).first available_plugins.include?(class_name) end