diff options
Diffstat (limited to 'lib/rdoc/generators/chm_generator.rb')
-rw-r--r-- | lib/rdoc/generators/chm_generator.rb | 172 |
1 files changed, 84 insertions, 88 deletions
diff --git a/lib/rdoc/generators/chm_generator.rb b/lib/rdoc/generators/chm_generator.rb index 354a444689..e951b40496 100644 --- a/lib/rdoc/generators/chm_generator.rb +++ b/lib/rdoc/generators/chm_generator.rb @@ -1,118 +1,114 @@ require 'rdoc/generators/html_generator' -module Generators +class Generators::CHMGenerator < Generators::HTMLGenerator - class CHMGenerator < HTMLGenerator + HHC_PATH = "c:/Program Files/HTML Help Workshop/hhc.exe" - HHC_PATH = "c:/Program Files/HTML Help Workshop/hhc.exe" + ## + # Standard generator factory - ## - # Standard generator factory - - def CHMGenerator.for(options) - CHMGenerator.new(options) - end - - def initialize(*args) - super - @op_name = @options.op_name || "rdoc" - check_for_html_help_workshop - end - - 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 + def self.for(options) + new(options) + end - ## - # Generate the html as normal, then wrap it in a help project + def initialize(*args) + super + @op_name = @options.op_name || "rdoc" + check_for_html_help_workshop + end - def generate(info) - super - @project_name = @op_name + ".hhp" - create_help_project - end + 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 - ## - # The project contains the project file, a table of contents and an index + ## + # Generate the html as normal, then wrap it in a help project - def create_help_project - create_project_file - create_contents_and_index - compile_project - end + def generate(info) + super + @project_name = @op_name + ".hhp" + create_help_project + end - ## - # The project file links together all the various - # files that go to make up the help. + ## + # The project contains the project file, a table of contents and an index - 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 + def create_help_project + create_project_file + create_contents_and_index + compile_project + end - values['all_html_files'] = files + ## + # The project file links together all the various + # files that go to make up the help. - File.open(@project_name, "w") do |f| - template.write_html_on(f, values) - end + 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 - ## - # 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 + values['all_html_files'] = files - def create_contents_and_index - contents = [] - index = [] + File.open(@project_name, "w") do |f| + template.write_html_on(f, values) + end + end - (@files+@classes).sort.each do |entry| - content_entry = { "c_name" => entry.name, "ref" => entry.path } - index << { "name" => entry.name, "aref" => entry.path } + ## + # 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 - internals = [] + def create_contents_and_index + contents = [] + index = [] - methods = entry.build_method_summary_list(entry.path) + (@files+@classes).sort.each do |entry| + content_entry = { "c_name" => entry.name, "ref" => entry.path } + index << { "name" => entry.name, "aref" => entry.path } - content_entry["methods"] = methods unless methods.empty? - contents << content_entry - index.concat methods - end + internals = [] - values = { "contents" => contents } - template = TemplatePage.new(RDoc::Page::CONTENTS) - File.open("contents.hhc", "w") do |f| - template.write_html_on(f, values) - end + methods = entry.build_method_summary_list(entry.path) - values = { "index" => index } - template = TemplatePage.new(RDoc::Page::CHM_INDEX) - File.open("index.hhk", "w") do |f| - template.write_html_on(f, values) - end + content_entry["methods"] = methods unless methods.empty? + contents << content_entry + index.concat methods end - ## - # Invoke the windows help compiler to compiler the project + values = { "contents" => contents } + template = TemplatePage.new(RDoc::Page::CONTENTS) + File.open("contents.hhc", "w") do |f| + template.write_html_on(f, values) + end - def compile_project - system(HHC_PATH, @project_name) + 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 + + ## + # Invoke the windows help compiler to compiler the project + def compile_project + system(HHC_PATH, @project_name) end end |