def inherited( subclass )
keys = [ subclass ]
if subclass.name
simple_name = subclass.name.sub( /#<Class:0x[[:xdigit:]]+>::/i, '' )
keys << simple_name << simple_name.downcase
PluginFactory.log.debug "Inherited %p for %p-type plugins" % [ subclass, self.factory_type ]
if subclass.name.match( /(?:.*::)?(\w+)(?:#{self.factory_type})/i )
keys << Regexp.last_match[1].downcase
else
keys << subclass.name.sub( /.*::/, '' ).downcase
end
else
PluginFactory.log.debug " no name-based variants for anonymous subclass %p" % [ subclass ]
end
keys.compact.uniq.each do |key|
PluginFactory.log.info "Registering %s derivative of %s as %p" %
[ subclass.name, self.name, key ]
self.derivatives[ key ] = subclass
end
super
end