def get_subclass( class_name )
return self if ( self.name == class_name || class_name == '' )
if class_name.is_a?( Class )
return class_name if class_name <= self
raise ArgumentError, "%s is not a descendent of %s" % [class_name, self]
end
class_name = class_name.to_s
unless self.derivatives.has_key?( class_name.downcase )
self.load_derivative( class_name )
subclass = self.derivatives[ class_name.downcase ]
unless subclass.is_a?( Class )
raise FactoryError,
"load_derivative(%s) added something other than a class "\
"to the registry for %s: %p" %
[ class_name, self.name, subclass ]
end
end
return self.derivatives[ class_name.downcase ]
end