# File lib/asciidoctor/extensions.rb, line 39 def class_for_name(qualified_name) qualified_name.split('::').inject(Object) do |module_, name| if name.empty? module_ elsif module_.const_defined? name module_.const_get(name) else raise "Could not resolve class for name: #{qualified_name}" end end end
QUESTION should we require extensions to have names? how about autogenerate name for class, assume extension is name of block if block is given having a name makes it easier to unregister an extension
# File lib/asciidoctor/extensions.rb, line 27 def register extension = nil, &block if block_given? registered << block elsif extension registered << resolve_class(extension) end end
# File lib/asciidoctor/extensions.rb, line 19 def registered @registered ||= [] end
# File lib/asciidoctor/extensions.rb, line 15 def registered? !@registered.nil? end
# File lib/asciidoctor/extensions.rb, line 35 def resolve_class(object) object.is_a?(Class) ? object : class_for_name(object.to_s) end
# File lib/asciidoctor/extensions.rb, line 51 def unregister_all @registered = [] end