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