Class: Rake::RDocTask

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

Overview

NOTE: Rake::RDocTask is deprecated in favor of RDoc:Task which is included in RDoc 2.4.2+. Use require ‘rdoc/task’ to require it.

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.

Constant Summary

Constants included from FileUtilsExt

FileUtilsExt::DEFAULT

Constants included from FileUtils

FileUtils::LN_SUPPORTED, FileUtils::RUBY

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from TaskLib

#paste

Methods included from FileUtilsExt

#nowrite, #rake_check_options, #rake_merge_option, #rake_output_message, #verbose, #when_writing

Methods included from FileUtils

#ruby, #safe_ln, #sh, #split_all

Methods included from Cloneable

#clone, #dup

Constructor Details

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

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

Yields:

  • (_self)

Yield Parameters:



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/rake/rdoctask.rb', line 112

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

#externalObject

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



106
107
108
# File 'lib/rake/rdoctask.rb', line 106

def external
  @external
end

#inline_sourceObject

Returns the value of attribute inline_source.



108
109
110
# File 'lib/rake/rdoctask.rb', line 108

def inline_source
  @inline_source
end

#mainObject

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



94
95
96
# File 'lib/rake/rdoctask.rb', line 94

def main
  @main
end

#nameObject

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



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

def name
  @name
end

#optionsObject

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



103
104
105
# File 'lib/rake/rdoctask.rb', line 103

def options
  @options
end

#rdoc_dirObject

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



87
88
89
# File 'lib/rake/rdoctask.rb', line 87

def rdoc_dir
  @rdoc_dir
end

#rdoc_filesObject

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



100
101
102
# File 'lib/rake/rdoctask.rb', line 100

def rdoc_files
  @rdoc_files
end

#templateObject

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



97
98
99
# File 'lib/rake/rdoctask.rb', line 97

def template
  @template
end

#titleObject

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



90
91
92
# File 'lib/rake/rdoctask.rb', line 90

def title
  @title
end

Instance Method Details

#before_running_rdoc(&block) ⇒ Object

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.



194
195
196
# File 'lib/rake/rdoctask.rb', line 194

def before_running_rdoc(&block)
  @before_running_rdoc = block
end

#defineObject

Create the tasks defined by this task lib.



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# File 'lib/rake/rdoctask.rb', line 134

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

#option_listObject



169
170
171
172
173
174
175
176
177
# File 'lib/rake/rdoctask.rb', line 169

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

#option_stringObject



187
188
189
# File 'lib/rake/rdoctask.rb', line 187

def option_string
  option_list.join(' ')
end

#quote(str) ⇒ Object



179
180
181
182
183
184
185
# File 'lib/rake/rdoctask.rb', line 179

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