class Dragonfly::Configurable::Configurer
Attributes
obj[R]
Public Class Methods
new(&block)
click to toggle source
# File lib/dragonfly/configurable.rb, line 44 def initialize(&block) (class << self; self; end).class_eval(&block) end
Private Class Methods
extract_options(args)
click to toggle source
# File lib/dragonfly/configurable.rb, line 38 def extract_options(args) opts = args.last.is_a?(Hash) ? args.pop : {} [args, opts] end
meth(*args)
click to toggle source
# File lib/dragonfly/configurable.rb, line 25 def meth(*args) names, opts = extract_options(args) names.each do |name| define_method name do |*args, &block| if opts[:for] obj.send(opts[:for]).send(name, *args, &block) else obj.send(name, *args, &block) end end end end
writer(*args)
click to toggle source
# File lib/dragonfly/configurable.rb, line 12 def writer(*args) names, opts = extract_options(args) names.each do |name| define_method name do |value| if opts[:for] obj.send(opts[:for]).send("#{name}=", value) else obj.send("#{name}=", value) end end end end
Public Instance Methods
configure(obj, &block)
click to toggle source
# File lib/dragonfly/configurable.rb, line 48 def configure(obj, &block) previous_obj = @obj @obj = obj instance_eval(&block) @obj = previous_obj end
configure_with_plugin(obj, plugin, *args, &block)
click to toggle source
# File lib/dragonfly/configurable.rb, line 55 def configure_with_plugin(obj, plugin, *args, &block) if plugin.is_a?(Symbol) symbol = plugin raise(UnregisteredPlugin, "plugin #{symbol.inspect} is not registered") unless registered_plugins[symbol] plugin = registered_plugins[symbol].call obj.plugins[symbol] = plugin if obj.respond_to?(:plugins) end plugin.call(obj, *args, &block) plugin end
plugin(plugin, *args, &block)
click to toggle source
# File lib/dragonfly/configurable.rb, line 70 def plugin(plugin, *args, &block) configure_with_plugin(obj, plugin, *args, &block) end
register_plugin(name, &block)
click to toggle source
# File lib/dragonfly/configurable.rb, line 66 def register_plugin(name, &block) registered_plugins[name] = block end
Private Instance Methods
registered_plugins()
click to toggle source
# File lib/dragonfly/configurable.rb, line 78 def registered_plugins @registered_plugins ||= {} end