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