While we were keeping track of superclass/nodes during RDoc generation we weren't doing the reverse. This patch enhance Puppetdoc RDoc mode by tracking inheritance and for each base/super class/nodes displays the list of inherited classes /nodes.
Signed-off-by: Brice Figureau <[email protected]> --- lib/puppet/util/rdoc/code_objects.rb | 7 +++++- .../util/rdoc/generators/puppet_generator.rb | 23 ++++++++++++++++++++ .../util/rdoc/generators/template/puppet/puppet.rb | 13 +++++++++++ 3 files changed, 42 insertions(+), 1 deletions(-) diff --git a/lib/puppet/util/rdoc/code_objects.rb b/lib/puppet/util/rdoc/code_objects.rb index e59e1a0..ce1dfc1 100644 --- a/lib/puppet/util/rdoc/code_objects.rb +++ b/lib/puppet/util/rdoc/code_objects.rb @@ -88,12 +88,13 @@ module RDoc # It is mapped to a HTMLPuppetClass for display # It leverages RDoc (ruby) Class class PuppetClass < ClassModule - attr_accessor :resource_list, :requires + attr_accessor :resource_list, :requires, :childs def initialize(name, superclass) super(name,superclass) @resource_list = [] @requires = [] + @childs = [] end def add_resource(resource) @@ -111,6 +112,10 @@ module RDoc def add_require(required) add_to(@requires, required) end + + def add_child(child) + @childs << child + end end # PuppetNode holds a puppet node diff --git a/lib/puppet/util/rdoc/generators/puppet_generator.rb b/lib/puppet/util/rdoc/generators/puppet_generator.rb index 378c3aa..17fa48d 100644 --- a/lib/puppet/util/rdoc/generators/puppet_generator.rb +++ b/lib/puppet/util/rdoc/generators/puppet_generator.rb @@ -136,6 +136,15 @@ module Generators @allfiles << { "file" => file, "modules" => modules, "classes" => classes, "methods" => methods, "nodes" => nodes } end + # scan all classes to create the childs references + @allclasses.values.each do |klass| + if superklass = klass.context.superclass + if superklass = AllReferences[superklass] and (superklass.is_a?(HTMLPuppetClass) or superklass.is_a?(HTMLPuppetNode)) + superklass.context.add_child(klass.context) + end + end + end + @classes = @allclasses.values end @@ -401,12 +410,19 @@ module Generators rl = build_require_list(@context) @values["requires"] = rl unless rl.empty? + cl = build_child_list(@context) + @values["childs"] = cl unless cl.empty? + @values end def build_require_list(context) build_referenced_list(context.requires) end + + def build_child_list(context) + build_referenced_list(context.childs) + end end class HTMLPuppetNode < ContextUser @@ -484,6 +500,9 @@ module Generators rl = build_require_list(@context) @values["requires"] = rl unless rl.empty? + cl = build_child_list(@context) + @values["childs"] = cl unless cl.empty? + @values["sections"] = @context.sections.map do |section| secdata = { @@ -590,6 +609,10 @@ module Generators build_referenced_list(context.requires) end + def build_child_list(context) + build_referenced_list(context.childs) + end + def <=>(other) self.name <=> other.name end diff --git a/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb b/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb index c8f1e7d..bae9fc7 100644 --- a/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +++ b/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb @@ -538,6 +538,7 @@ IF:description </div> ENDIF:description + IF:toc <div id="contents-list"> <h3 class="section-bar">Contents</h3> @@ -549,6 +550,18 @@ END:toc ENDIF:toc </div> +<!-- if childs --> +IF:childs + <div id="childs"> + <h3 class="section-bar">Inherited by</h3> + <div id="childs-list"> +START:childs + <span class="child-name">HREF:aref:name:</span> +END:childs + </div> + </div> +ENDIF:childs + IF:methods <div id="method-list"> <h3 class="section-bar">Defines</h3> -- 1.6.4 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en -~----------~----~----~----~------~----~------~--~---
