Class | Generators::CHMGenerator |
In: |
rdoc/generators/chm_generator.rb
|
Parent: | HTMLGenerator |
HHC_PATH | = | "c:\\Program Files\\HTML Help Workshop\\hhc.exe" |
Standard generator factory
# File rdoc/generators/chm_generator.rb, line 10 def CHMGenerator.for(options) CHMGenerator.new(options) end
# File rdoc/generators/chm_generator.rb, line 15 def initialize(*args) super @op_name = @options.op_name || "rdoc" check_for_html_help_workshop end
# File rdoc/generators/chm_generator.rb, line 21 def check_for_html_help_workshop stat = File.stat(HHC_PATH) rescue $stderr << "\n.chm output generation requires that Microsoft's Html Help\n" << "Workshop is installed. RDoc looks for it in:\n\n " << HHC_PATH << "\n\nYou can download a copy for free from:\n\n" << " http://msdn.microsoft.com/library/default.asp?" << "url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp\n\n" exit 99 end
Invoke the windows help compiler to compiler the project
# File rdoc/generators/chm_generator.rb, line 105 def compile_project system("\"#{HHC_PATH}\" #@project_name") end
The contents is a list of all files and modules. For each we include as sub-entries the list of methods they contain. As we build the contents we also build an index file
# File rdoc/generators/chm_generator.rb, line 74 def create_contents_and_index contents = [] index = [] (@files+@classes).sort.each do |entry| content_entry = { "c_name" => entry.name, "ref" => entry.path } index << { "name" => entry.name, "aref" => entry.path } internals = [] methods = entry.build_method_summary_list(entry.path) content_entry["methods"] = methods unless methods.empty? contents << content_entry index.concat methods end values = { "contents" => contents } template = TemplatePage.new(RDoc::Page::CONTENTS) File.open("contents.hhc", "w") do |f| template.write_html_on(f, values) end values = { "index" => index } template = TemplatePage.new(RDoc::Page::CHM_INDEX) File.open("index.hhk", "w") do |f| template.write_html_on(f, values) end end
The project contains the project file, a table of contents and an index
# File rdoc/generators/chm_generator.rb, line 45 def create_help_project create_project_file create_contents_and_index compile_project end
The project file links together all the various files that go to make up the help.
# File rdoc/generators/chm_generator.rb, line 54 def create_project_file template = TemplatePage.new(RDoc::Page::HPP_FILE) values = { "title" => @options.title, "opname" => @op_name } files = [] @files.each do |f| files << { "html_file_name" => f.path } end values['all_html_files'] = files File.open(@project_name, "w") do |f| template.write_html_on(f, values) end end