PuppetClass holds a puppet class It is mapped to a HTMLPuppetClass for display It leverages RDoc (ruby) Class
# File lib/puppet/util/rdoc/code_objects.rb, line 93 def initialize(name, superclass) super(name,superclass) @resource_list = [] @requires = [] @realizes = [] @childs = [] end
# File lib/puppet/util/rdoc/code_objects.rb, line 124 def add_child(child) @childs << child end
# File lib/puppet/util/rdoc/code_objects.rb, line 120 def add_realize(realized) add_to(@realizes, realized) end
we’re (ab)using the RDoc require system here. we’re adding a required Puppet class, overriding the RDoc #add_require method which sees ruby required files.
# File lib/puppet/util/rdoc/code_objects.rb, line 116 def add_require(required) add_to(@requires, required) end
# File lib/puppet/util/rdoc/code_objects.rb, line 101 def add_resource(resource) add_to(@resource_list, resource) end
Look up the given symbol. RDoc only looks for class1::class2.method or class1::class2#method. Since our definitions are mapped to RDoc methods but are written class1::class2::define we need to perform the lookup by ourselves.
# File lib/puppet/util/rdoc/code_objects.rb, line 132 def find_symbol(symbol, method=nil) result = super if not result and symbol =~ /::/ modules = symbol.split(/::/) unless modules.empty? module_name = modules.shift result = find_module_named(module_name) if result last_name = "" previous = nil modules.each do |module_name| previous = result last_name = module_name result = result.find_module_named(module_name) break unless result end unless result result = previous method = last_name end end end if result && method if !result.respond_to?(:find_local_symbol) p result.name p method fail end result = result.find_local_symbol(method) end end result end
# File lib/puppet/util/rdoc/code_objects.rb, line 105 def is_module? false end
# File lib/puppet/util/rdoc/code_objects.rb, line 109 def superclass=(superclass) @superclass = superclass end