class Facter::ClassDiscoverer

Public Class Methods

new() click to toggle source
# File lib/facter/framework/core/fact_loaders/class_discoverer.rb, line 7
def initialize
  @log = Log.new(self)
end

Public Instance Methods

discover_classes(operating_system) click to toggle source
# File lib/facter/framework/core/fact_loaders/class_discoverer.rb, line 11
def discover_classes(operating_system)
  os_module_name = Module.const_get("Facts::#{operating_system}")

  # select only classes
  find_nested_classes(os_module_name, discovered_classes = [])
  discovered_classes
rescue NameError
  @log.debug("There is no module named #{operating_system}")
  []
end
find_nested_classes(mod, discovered_classes) click to toggle source
# File lib/facter/framework/core/fact_loaders/class_discoverer.rb, line 22
def find_nested_classes(mod, discovered_classes)
  mod.constants.each do |constant_name|
    obj = mod.const_get(constant_name)
    if obj.instance_of? Class
      discovered_classes << obj
    elsif obj.instance_of? Module
      find_nested_classes(Module.const_get("#{mod.name}::#{constant_name}"), discovered_classes)
    end
  end
end