Methods for registering configurable extensions.
Create a new configurable extension called name
.
Three methods will be defined on the calling object which allow to use this configurable extension:
Returns a hash of hashes that is used to store all configurables of the object.
Return the configured extension ext_name
.
Define an extension ext_name
by specifying either the data as
argument or by using a block.
# File lib/kramdown/utils/configurable.rb, line 27 def configurable(name) singleton_class = (class << self; self; end) singleton_class.send(:define_method, :configurables) do @_configurables ||= Hash.new {|h, k| h[k] = {}} end unless respond_to?(:configurables) singleton_class.send(:define_method, name) do |data| configurables[name][data] end singleton_class.send(:define_method, "add_#{name}".intern) do |data, *args, &block| configurables[name][data] = args.first || block end end