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