Extended maintenance of Ruby versions 1.8.7 and 1.9.2 will end on July 31, 2014. Read more

In Files

  • rdoc/generators/chm_generator.rb

Files

Class/Module Index [+]

Quicksearch

Generators::CHMGenerator

Constants

HHC_PATH

Public Class Methods

for(options) click to toggle source

Standard generator factory

 
               # File rdoc/generators/chm_generator.rb, line 10
def CHMGenerator.for(options)
  CHMGenerator.new(options)
end
            
new(*args) click to toggle source
 
               # File rdoc/generators/chm_generator.rb, line 15
def initialize(*args)
  super
  @op_name = @options.op_name || "rdoc"
  check_for_html_help_workshop
end
            

Public Instance Methods

check_for_html_help_workshop() click to toggle source
 
               # 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
            
compile_project() click to toggle source

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
            
create_contents_and_index() click to toggle source

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
            
create_help_project() click to toggle source

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
            
create_project_file() click to toggle source

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
            
generate(info) click to toggle source

Generate the html as normal, then wrap it in a help project

 
               # File rdoc/generators/chm_generator.rb, line 37
def generate(info)
  super
  @project_name = @op_name + ".hhp"
  create_help_project
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus