[ruby/rdoc] Deprecate main and title directives

(https://github.com/ruby/rdoc/pull/1218)

* Deprecate :main: directive

* Deprecate :title: direcive

* Update documentation

* Remove :main: directive's usage

* Update test cases

* Add '.rdoc_options' to suggested alternatives

https://github.com/ruby/rdoc/commit/e2d4ac9dad
This commit is contained in:
Stan Lo 2024-12-05 19:36:28 +08:00 committed by git
parent 866f1a1f2d
commit 2ecd2fe0ed
6 changed files with 58 additions and 20 deletions

View File

@ -535,17 +535,6 @@ require 'rdoc'
# parameter +type+ is one of: +rdoc+ (the default), +markdown+, +rd+, +tomdoc+.
# See {Markup Formats}[rdoc-ref:RDoc::Markup@Markup+Formats].
#
# ===== Directives for HTML Output
#
# - <tt># :title: _text_</tt>:
#
# - Appears on a line by itself.
# - Specifies the title for the HTML output.
#
# - <tt># :main: _filename_</tt>:
# - Appears on a line by itself.
# - Specifies the HTML file to be displayed first.
#
# ===== Directives for Method Documentation
#
# - <tt># :call-seq:</tt>:

View File

@ -1,8 +1,6 @@
# frozen_string_literal: true
$DEBUG_RDOC = nil
# :main: README.rdoc
##
# RDoc produces documentation for Ruby source files by parsing the source and
# extracting the definition for classes, modules, methods, includes and

View File

@ -187,6 +187,14 @@ class RDoc::Markup::PreProcess
include_file filename, prefix, encoding
when 'main' then
@options.main_page = param if @options.respond_to? :main_page
warn <<~MSG
The :main: directive is deprecated and will be removed in RDoc 7.
You can use these options to specify the initial page displayed instead:
- `--main=#{param}` via the command line
- `rdoc.main = "#{param}"` if you use `RDoc::Task`
- `main_page: #{param}` in your `.rdoc_options` file
MSG
blankline
when 'nodoc' then
@ -217,6 +225,15 @@ class RDoc::Markup::PreProcess
when 'title' then
@options.default_title = param if @options.respond_to? :default_title=
warn <<~MSG
The :title: directive is deprecated and will be removed in RDoc 7.
You can use these options to specify the title displayed instead:
- `--title=#{param}` via the command line
- `rdoc.title = "#{param}"` if you use `RDoc::Task`
- `title: #{param}` in your `.rdoc_options` file
MSG
blankline
when 'yield', 'yields' then
return blankline unless code_object

View File

@ -1097,15 +1097,34 @@ class RDoc::Parser::C < RDoc::Parser
# */
#
# This method modifies the +comment+
# Both :main: and :title: directives are deprecated and will be removed in RDoc 7.
def look_for_directives_in context, comment
@preprocess.handle comment, context do |directive, param|
case directive
when 'main' then
@options.main_page = param
warn <<~MSG
The :main: directive is deprecated and will be removed in RDoc 7.
You can use these options to specify the initial page displayed instead:
- `--main=#{param}` via the command line
- `rdoc.main = "#{param}"` if you use `RDoc::Task`
- `main_page: #{param}` in your `.rdoc_options` file
MSG
''
when 'title' then
@options.default_title = param if @options.respond_to? :default_title=
warn <<~MSG
The :title: directive is deprecated and will be removed in RDoc 7.
You can use these options to specify the title displayed instead:
- `--title=#{param}` via the command line
- `rdoc.title = "#{param}"` if you use `RDoc::Task`
- `title: #{param}` in your `.rdoc_options` file
MSG
''
end
end

View File

@ -407,6 +407,7 @@ The internal error was:
return [] if file_list.empty?
# This workaround can be removed after the :main: directive is removed
original_options = @options.dup
@stats.begin_adding

View File

@ -2,7 +2,7 @@
require_relative 'helper'
class TestRDocMarkupPreProcess < RDoc::TestCase
class RDoc::Markup::PreProcessTest < RDoc::TestCase
def setup
super
@ -85,18 +85,26 @@ contents of a string.
def test_handle
text = "# :main: M\n"
out = @pp.handle text
output = nil
_, err = capture_output do
output = @pp.handle text
end
assert_equal "#\n", out
assert_include err, "The :main: directive is deprecated and will be removed in RDoc 7."
assert_equal "#\n", output
end
def test_handle_comment
text = "# :main: M\n"
c = comment text
out = @pp.handle c
output = nil
_, err = capture_output do
output = @pp.handle c
end
assert_equal "#\n", out
assert_include err, "The :main: directive is deprecated and will be removed in RDoc 7."
assert_equal "#\n", output
end
def test_handle_markup
@ -245,8 +253,11 @@ contents of a string.
def test_handle_directive_main
@pp.options = RDoc::Options.new
@pp.handle_directive '', 'main', 'M'
_, err = capture_output do
@pp.handle_directive '', 'main', 'M'
end
assert_include err, "The :main: directive is deprecated and will be removed in RDoc 7."
assert_equal 'M', @pp.options.main_page
end
@ -385,8 +396,11 @@ contents of a string.
def test_handle_directive_title
@pp.options = RDoc::Options.new
@pp.handle_directive '', 'title', 'T'
_, err = capture_output do
@pp.handle_directive '', 'title', 'T'
end
assert_include err, "The :title: directive is deprecated and will be removed in RDoc 7."
assert_equal 'T', @pp.options.title
end