Class: Generators::CHMGenerator
- Inherits:
-
HTMLGenerator
- Object
- HTMLGenerator
- Generators::CHMGenerator
- Defined in:
- lib/rdoc/generators/chm_generator.rb
Constant Summary collapse
- HHC_PATH =
"c:/Program Files/HTML Help Workshop/hhc.exe"
Class Method Summary collapse
-
.for(options) ⇒ Object
Standard generator factory.
Instance Method Summary collapse
- #check_for_html_help_workshop ⇒ Object
-
#compile_project ⇒ Object
Invoke the windows help compiler to compiler the project.
-
#create_contents_and_index ⇒ Object
The contents is a list of all files and modules.
-
#create_help_project ⇒ Object
The project contains the project file, a table of contents and an index.
-
#create_project_file ⇒ Object
The project file links together all the various files that go to make up the help.
-
#generate(info) ⇒ Object
Generate the html as normal, then wrap it in a help project.
-
#initialize(*args) ⇒ CHMGenerator
constructor
A new instance of CHMGenerator.
Methods inherited from HTMLGenerator
Methods included from MarkUp
Constructor Details
#initialize(*args) ⇒ CHMGenerator
Returns a new instance of CHMGenerator.
15 16 17 18 19 |
# File 'lib/rdoc/generators/chm_generator.rb', line 15 def initialize(*args) super @op_name = @options.op_name || "rdoc" check_for_html_help_workshop end |
Class Method Details
.for(options) ⇒ Object
Standard generator factory
10 11 12 |
# File 'lib/rdoc/generators/chm_generator.rb', line 10 def CHMGenerator.for() CHMGenerator.new() end |
Instance Method Details
#check_for_html_help_workshop ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/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 |
#compile_project ⇒ Object
Invoke the windows help compiler to compiler the project
105 106 107 |
# File 'lib/rdoc/generators/chm_generator.rb', line 105 def compile_project system(HHC_PATH, @project_name) end |
#create_contents_and_index ⇒ Object
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
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/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 |
#create_help_project ⇒ Object
The project contains the project file, a table of contents and an index
45 46 47 48 49 |
# File 'lib/rdoc/generators/chm_generator.rb', line 45 def create_help_project create_project_file create_contents_and_index compile_project end |
#create_project_file ⇒ Object
The project file links together all the various files that go to make up the help.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/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 |
#generate(info) ⇒ Object
Generate the html as normal, then wrap it in a help project
37 38 39 40 41 |
# File 'lib/rdoc/generators/chm_generator.rb', line 37 def generate(info) super @project_name = @op_name + ".hhp" create_help_project end |