223: def getSubclass( className )
224: return self if ( self.name == className || className == '' )
225: return className if className.is_a?( Class ) && className >= self
226:
227: unless self.derivatives.has_key?( className.downcase )
228: self.loadDerivative( className )
229:
230: unless self.derivatives.has_key?( className.downcase )
231: raise FactoryError,
232: "loadDerivative(%s) didn't add a '%s' key to the "\
233: "registry for %s" %
234: [ className, className.downcase, self.name ]
235: end
236:
237: subclass = self.derivatives[ className.downcase ]
238: unless subclass.is_a?( Class )
239: raise FactoryError,
240: "loadDerivative(%s) added something other than a class "\
241: "to the registry for %s: %p" %
242: [ className, self.name, subclass ]
243: end
244: end
245:
246: return self.derivatives[ className.downcase ]
247: end