# File lib/puppet/util/rdoc/generators/puppet_generator.rb, line 230
230:     def gen_composite_index(collection, template, filename)\
231:       return if FileTest.exists?(filename)
232: 
233:       template = TemplatePage.new(RDoc::Page::FR_INDEX_BODY, template)
234:       res1 = []
235:       collection['classes'].sort.each do |f|
236:         if f.document_self
237:           res1 << { "href" => "../"+CGI.escapeHTML(f.path), "name" => CGI.escapeHTML(f.index_name) } unless f.context.is_module?
238:         end
239:       end
240: 
241:       res2 = []
242:       collection['methods'].sort.each do |f|
243:         res2 << { "href" => "../#{f.path}", "name" => f.index_name.sub(/\(.*\)$/,'') } if f.document_self
244:       end
245: 
246:       module_name = []
247:       res3 = []
248:       res4 = []
249:       collection['modules'].sort.each do |f|
250:         module_name << { "href" => "../"+CGI.escapeHTML(f.path), "name" => CGI.escapeHTML(f.index_name) }
251:         unless f.facts.nil?
252:           f.facts.each do |fact|
253:             res3 << {"href" => "../"+CGI.escapeHTML(AllReferences["PLUGIN(#{fact.name})"].path), "name" => CGI.escapeHTML(fact.name)}
254:           end
255:         end
256:         unless f.plugins.nil?
257:           f.plugins.each do |plugin|
258:             res4 << {"href" => "../"+CGI.escapeHTML(AllReferences["PLUGIN(#{plugin.name})"].path), "name" => CGI.escapeHTML(plugin.name)}
259:           end
260:         end
261:       end
262: 
263:       res5 = []
264:       collection['nodes'].sort.each do |f|
265:         res5 << { "href" => "../"+CGI.escapeHTML(f.path), "name" => CGI.escapeHTML(f.name) } if f.document_self
266:       end
267: 
268:       values = {
269:         "module" => module_name,
270:         "classes"    => res1,
271:         'classes_title' => CGI.escapeHTML("Classes"),
272:         'defines_title' => CGI.escapeHTML("Defines"),
273:         'facts_title' => CGI.escapeHTML("Custom Facts"),
274:         'plugins_title' => CGI.escapeHTML("Plugins"),
275:         'nodes_title' => CGI.escapeHTML("Nodes"),
276:         'index_url'  => main_url,
277:         'charset'    => @options.charset,
278:         'style_url'  => style_url('', @options.css),
279:       }
280: 
281:       values["defines"] = res2 if res2.size>0
282:       values["facts"] = res3 if res3.size>0
283:       values["plugins"] = res4 if res4.size>0
284:       values["nodes"] = res5 if res5.size>0
285: 
286:       File.open(filename, "w") do |f|
287:         template.write_html_on(f, values)
288:       end
289:     end