Class: Rake::RDocTask

Inherits:
TaskLib show all
Defined in:
lib/rake/rdoctask.rb

Overview

Create a documentation task that will generate the RDoc files for a project.

The RDocTask will create the following targets:

:rdoc

Main task for this RDOC task.

:clobber_rdoc

Delete all the rdoc files. This target is automatically added to the main clobber target.

:rerdoc

Rebuild the rdoc files from scratch, even if they are not out of date.

Simple Example:

Rake::RDocTask.new do |rd|
  rd.main = "README.rdoc"
  rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
end

The rd object passed to the block is an RDocTask object. See the attributes list for the RDocTask class for available customization options.

Specifying different task names

You may wish to give the task a different name, such as if you are generating two sets of documentation. For instance, if you want to have a development set of documentation including private methods:

Rake::RDocTask.new(:rdoc_dev) do |rd|
  rd.main = "README.doc"
  rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
  rd.options << "--all"
end

The tasks would then be named :rdoc_dev, :clobber_rdoc_dev, and :rerdoc_dev.

If you wish to have completely different task names, then pass a Hash as first argument. With the :rdoc, :clobber_rdoc and :rerdoc options, you can customize the task names to your liking. For example:

Rake::RDocTask.new(:rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force")

This will create the tasks :rdoc, :rdoc_clean and :rdoc:force.

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Methods inherited from TaskLib

#paste

Methods included from Cloneable

#clone, #dup

Constructor Details

- (RDocTask) initialize(name = :rdoc) {|_self| ... }

Create an RDoc task with the given name. See the RDocTask class overview for documentation.

Yields:

  • (_self)

Yield Parameters:



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/rake/rdoctask.rb', line 87

def initialize(name = :rdoc)  # :yield: self
  if name.is_a?(Hash)
    invalid_options = name.keys.map { |k| k.to_sym } - [:rdoc, :clobber_rdoc, :rerdoc]
    if !invalid_options.empty?
      raise ArgumentError, "Invalid option(s) passed to RDocTask.new: #{invalid_options.join(", ")}"
    end
  end

  @name = name
  @rdoc_files = Rake::FileList.new
  @rdoc_dir = 'html'
  @main = nil
  @title = nil
  @template = nil
  @external = false
  @inline_source = true
  @options = []
  yield self if block_given?
  define
end

Instance Attribute Details

- (Object) external

Whether to run the rdoc process as an external shell (default is false)



81
82
83
# File 'lib/rake/rdoctask.rb', line 81

def external
  @external
end

- (Object) inline_source

Returns the value of attribute inline_source



83
84
85
# File 'lib/rake/rdoctask.rb', line 83

def inline_source
  @inline_source
end

- (Object) main

Name of file to be used as the main, top level file of the RDoc. (default is none)



69
70
71
# File 'lib/rake/rdoctask.rb', line 69

def main
  @main
end

- (Object) name

Name of the main, top level task. (default is :rdoc)



59
60
61
# File 'lib/rake/rdoctask.rb', line 59

def name
  @name
end

- (Object) options

Additional list of options to be passed rdoc. (default is [])



78
79
80
# File 'lib/rake/rdoctask.rb', line 78

def options
  @options
end

- (Object) rdoc_dir

Name of directory to receive the html output files. (default is "html")



62
63
64
# File 'lib/rake/rdoctask.rb', line 62

def rdoc_dir
  @rdoc_dir
end

- (Object) rdoc_files

List of files to be included in the rdoc generation. (default is [])



75
76
77
# File 'lib/rake/rdoctask.rb', line 75

def rdoc_files
  @rdoc_files
end

- (Object) template

Name of template to be used by rdoc. (defaults to rdoc's default)



72
73
74
# File 'lib/rake/rdoctask.rb', line 72

def template
  @template
end

- (Object) title

Title of RDoc documentation. (defaults to rdoc's default)



65
66
67
# File 'lib/rake/rdoctask.rb', line 65

def title
  @title
end

Instance Method Details

- (Object) before_running_rdoc(&block)

The block passed to this method will be called just before running the RDoc generator. It is allowed to modify RDocTask attributes inside the block.



170
171
172
# File 'lib/rake/rdoctask.rb', line 170

def before_running_rdoc(&block)
  @before_running_rdoc = block
end

- (Object) define

Create the tasks defined by this task lib.



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/rake/rdoctask.rb', line 109

def define
  if rdoc_task_name != "rdoc"
    desc "Build the RDOC HTML Files"
  else
    desc "Build the #{rdoc_task_name} HTML Files"
  end
  task rdoc_task_name

  desc "Force a rebuild of the RDOC files"
  task rerdoc_task_name => [clobber_task_name, rdoc_task_name]

  desc "Remove rdoc products"
  task clobber_task_name do
    rm_r rdoc_dir rescue nil
  end

  task :clobber => [clobber_task_name]

  directory @rdoc_dir
  task rdoc_task_name => [rdoc_target]
  file rdoc_target => @rdoc_files + [Rake.application.rakefile] do
    rm_r @rdoc_dir rescue nil
    @before_running_rdoc.call if @before_running_rdoc
    args = option_list + @rdoc_files
    if @external
      argstring = args.join(' ')
      sh %{ruby -Ivendor vendor/rd #{argstring}}
    else
      require 'rdoc/rdoc'
      RDoc::RDoc.new.document(args)
    end
  end
  self
end

- (Object) option_list

List of options that will be supplied to RDoc



145
146
147
148
149
150
151
152
153
# File 'lib/rake/rdoctask.rb', line 145

def option_list
  result = @options.dup
  result << "-o" << @rdoc_dir
  result << "--main" << quote(main) if main
  result << "--title" << quote(title) if title
  result << "-T" << quote(template) if template
  result << "--inline-source" if inline_source && !@options.include?("--inline-source") && !@options.include?("-S")
  result
end

- (Object) option_string



163
164
165
# File 'lib/rake/rdoctask.rb', line 163

def option_string
  option_list.join(' ')
end

- (Object) quote(str)



155
156
157
158
159
160
161
# File 'lib/rake/rdoctask.rb', line 155

def quote(str)
  if @external
    "'#{str}'"
  else
    str
  end
end