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