diff options
Diffstat (limited to 'lib/puppet/util/subclass_loader.rb')
-rw-r--r-- | lib/puppet/util/subclass_loader.rb | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/puppet/util/subclass_loader.rb b/lib/puppet/util/subclass_loader.rb index 4f24d5544..00f011d03 100644 --- a/lib/puppet/util/subclass_loader.rb +++ b/lib/puppet/util/subclass_loader.rb @@ -1,6 +1,8 @@ # A module for loading subclasses into an array and retrieving # them by name. Also sets up a method for each class so # that you can just do Klass.subclass, rather than Klass.subclass(:subclass). +# +# This module is currently used by network handlers and clients. module Puppet::Util::SubclassLoader attr_accessor :loader, :classloader @@ -48,7 +50,6 @@ module Puppet::Util::SubclassLoader # subclasses, thus the reason we're keeping track of the @@classloader. def inherited(sub) @subclasses ||= [] - @subclasses << sub sub.classloader = self.classloader if self.classloader == self @subclasses << sub @@ -78,6 +79,12 @@ module Puppet::Util::SubclassLoader return @name end + + # Provide a list of all subclasses. + def subclasses + @loader.loadall + @subclasses.collect { |klass| klass.name } + end end # $Id$ |