summaryrefslogtreecommitdiffstats
path: root/lib/puppet/util/subclass_loader.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/util/subclass_loader.rb')
-rw-r--r--lib/puppet/util/subclass_loader.rb9
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$