diff options
| author | Brice Figureau <brice-puppet@daysofwonder.com> | 2009-10-13 23:47:06 +0200 |
|---|---|---|
| committer | James Turnbull <james@lovedthanlost.net> | 2009-10-24 08:36:58 +1100 |
| commit | ced5a7887836d1491273b5d6728589f494f8a337 (patch) | |
| tree | d3f90aff910a1177d92f998013f490a0b321d520 /lib | |
| parent | 8d9fbbd4b9d7f1d467ea6123fedcf0ee74f4e8cc (diff) | |
| download | puppet-ced5a7887836d1491273b5d6728589f494f8a337.tar.gz puppet-ced5a7887836d1491273b5d6728589f494f8a337.tar.xz puppet-ced5a7887836d1491273b5d6728589f494f8a337.zip | |
Fix #2376 - Display class/node inheritance in puppetdoc
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 <brice-puppet@daysofwonder.com>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/puppet/util/rdoc/code_objects.rb | 7 | ||||
| -rw-r--r-- | lib/puppet/util/rdoc/generators/puppet_generator.rb | 23 | ||||
| -rw-r--r-- | lib/puppet/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 056f376c6..be5e468c0 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) @@ -114,6 +115,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 b7055e799..f06879fff 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 @@ -400,12 +409,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 @@ -483,6 +499,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 = { @@ -589,6 +608,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 c8f1e7d04..bae9fc723 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> |
