rdoc 3.1 → 6.3.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/CONTRIBUTING.rdoc +220 -0
- data/CVE-2013-0256.rdoc +49 -0
- data/ExampleMarkdown.md +37 -0
- data/ExampleRDoc.rdoc +208 -0
- data/Gemfile +12 -0
- data/History.rdoc +1666 -0
- data/LEGAL.rdoc +50 -0
- data/LICENSE.rdoc +57 -0
- data/README.rdoc +129 -0
- data/RI.rdoc +57 -0
- data/Rakefile +84 -81
- data/TODO.rdoc +59 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/{bin → exe}/rdoc +11 -2
- data/exe/ri +12 -0
- data/lib/rdoc/alias.rb +1 -2
- data/lib/rdoc/anon_class.rb +3 -2
- data/lib/rdoc/any_method.rb +234 -40
- data/lib/rdoc/attr.rb +79 -11
- data/lib/rdoc/class_module.rb +443 -71
- data/lib/rdoc/code_object.rb +216 -20
- data/lib/rdoc/code_objects.rb +4 -21
- data/lib/rdoc/comment.rb +250 -0
- data/lib/rdoc/constant.rb +110 -9
- data/lib/rdoc/context/section.rb +232 -0
- data/lib/rdoc/context.rb +392 -172
- data/lib/rdoc/cross_reference.rb +202 -0
- data/lib/rdoc/encoding.rb +83 -28
- data/lib/rdoc/erb_partial.rb +19 -0
- data/lib/rdoc/erbio.rb +8 -3
- data/lib/rdoc/extend.rb +10 -0
- data/lib/rdoc/generator/darkfish.rb +507 -84
- data/lib/rdoc/generator/json_index.rb +300 -0
- data/lib/rdoc/generator/markup.rb +27 -74
- data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
- data/lib/rdoc/generator/pot/po.rb +84 -0
- data/lib/rdoc/generator/pot/po_entry.rb +141 -0
- data/lib/rdoc/generator/pot.rb +98 -0
- data/lib/rdoc/generator/ri.rb +8 -62
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +22 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +172 -0
- data/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +639 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +18 -60
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -83
- data/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
- data/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +62 -0
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +58 -0
- data/lib/rdoc/generator/template/json_index/.document +1 -0
- data/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
- data/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
- data/lib/rdoc/generator.rb +24 -13
- data/lib/rdoc/ghost_method.rb +1 -2
- data/lib/rdoc/i18n/locale.rb +102 -0
- data/lib/rdoc/i18n/text.rb +126 -0
- data/lib/rdoc/i18n.rb +10 -0
- data/lib/rdoc/include.rb +5 -95
- data/lib/rdoc/known_classes.rb +5 -2
- data/lib/rdoc/markdown/entities.rb +2132 -0
- data/lib/rdoc/markdown/literals.kpeg +23 -0
- data/lib/rdoc/markdown/literals.rb +416 -0
- data/lib/rdoc/markdown.kpeg +1237 -0
- data/lib/rdoc/markdown.rb +16684 -0
- data/lib/rdoc/markup/attr_changer.rb +23 -0
- data/lib/rdoc/markup/attr_span.rb +36 -0
- data/lib/rdoc/markup/attribute_manager.rb +135 -62
- data/lib/rdoc/markup/attributes.rb +71 -0
- data/lib/rdoc/markup/blank_line.rb +1 -0
- data/lib/rdoc/markup/block_quote.rb +15 -0
- data/lib/rdoc/markup/document.rb +96 -9
- data/lib/rdoc/markup/formatter.rb +138 -25
- data/lib/rdoc/markup/hard_break.rb +32 -0
- data/lib/rdoc/markup/heading.rb +61 -2
- data/lib/rdoc/markup/include.rb +43 -0
- data/lib/rdoc/markup/indented_paragraph.rb +48 -0
- data/lib/rdoc/markup/list.rb +25 -4
- data/lib/rdoc/markup/list_item.rb +18 -4
- data/lib/rdoc/markup/paragraph.rb +15 -0
- data/lib/rdoc/markup/parser.rb +180 -88
- data/lib/rdoc/markup/pre_process.rb +183 -38
- data/lib/rdoc/markup/raw.rb +6 -5
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/rule.rb +1 -0
- data/lib/rdoc/markup/table.rb +47 -0
- data/lib/rdoc/markup/to_ansi.rb +17 -7
- data/lib/rdoc/markup/to_bs.rb +5 -8
- data/lib/rdoc/markup/to_html.rb +238 -137
- data/lib/rdoc/markup/to_html_crossref.rb +125 -152
- data/lib/rdoc/markup/to_html_snippet.rb +285 -0
- data/lib/rdoc/markup/to_joined_paragraph.rb +47 -0
- data/lib/rdoc/markup/to_label.rb +75 -0
- data/lib/rdoc/markup/to_markdown.rb +192 -0
- data/lib/rdoc/markup/to_rdoc.rb +85 -15
- data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
- data/lib/rdoc/markup/to_test.rb +2 -4
- data/lib/rdoc/markup/to_tt_only.rb +121 -0
- data/lib/rdoc/markup/verbatim.rb +39 -0
- data/lib/rdoc/markup.rb +388 -110
- data/lib/rdoc/meta_method.rb +1 -2
- data/lib/rdoc/method_attr.rb +87 -21
- data/lib/rdoc/mixin.rb +121 -0
- data/lib/rdoc/normal_class.rb +39 -10
- data/lib/rdoc/normal_module.rb +22 -7
- data/lib/rdoc/options.rb +613 -73
- data/lib/rdoc/parser/c.rb +621 -287
- data/lib/rdoc/parser/changelog.rb +335 -0
- data/lib/rdoc/parser/markdown.rb +24 -0
- data/lib/rdoc/parser/rd.rb +23 -0
- data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
- data/lib/rdoc/parser/ruby.rb +1368 -762
- data/lib/rdoc/parser/ruby_tools.rb +42 -35
- data/lib/rdoc/parser/simple.rb +23 -11
- data/lib/rdoc/parser/text.rb +12 -0
- data/lib/rdoc/parser.rb +162 -89
- data/lib/rdoc/rd/block_parser.rb +1056 -0
- data/lib/rdoc/rd/block_parser.ry +639 -0
- data/lib/rdoc/rd/inline.rb +72 -0
- data/lib/rdoc/rd/inline_parser.rb +1208 -0
- data/lib/rdoc/rd/inline_parser.ry +593 -0
- data/lib/rdoc/rd.rb +100 -0
- data/lib/rdoc/rdoc.rb +208 -115
- data/lib/rdoc/require.rb +1 -2
- data/lib/rdoc/ri/driver.rb +734 -239
- data/lib/rdoc/ri/formatter.rb +1 -0
- data/lib/rdoc/ri/paths.rb +91 -48
- data/lib/rdoc/ri/store.rb +3 -261
- data/lib/rdoc/ri/task.rb +71 -0
- data/lib/rdoc/ri.rb +5 -2
- data/lib/rdoc/rubygems_hook.rb +246 -0
- data/lib/rdoc/servlet.rb +451 -0
- data/lib/rdoc/single_class.rb +14 -2
- data/lib/rdoc/stats/normal.rb +19 -12
- data/lib/rdoc/stats/quiet.rb +1 -0
- data/lib/rdoc/stats/verbose.rb +1 -0
- data/lib/rdoc/stats.rb +262 -104
- data/lib/rdoc/store.rb +979 -0
- data/lib/rdoc/task.rb +84 -44
- data/lib/rdoc/text.rb +117 -72
- data/lib/rdoc/token_stream.rb +73 -4
- data/lib/rdoc/tom_doc.rb +263 -0
- data/lib/rdoc/top_level.rb +111 -261
- data/lib/rdoc/version.rb +8 -0
- data/lib/rdoc.rb +127 -64
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +249 -0
- metadata +171 -291
- data/.autotest +0 -16
- data/.document +0 -5
- data/History.txt +0 -594
- data/LICENSE.txt +0 -57
- data/Manifest.txt +0 -158
- data/README.txt +0 -45
- data/RI.txt +0 -58
- data/bin/ri +0 -5
- data/lib/rdoc/gauntlet.rb +0 -52
- data/lib/rdoc/generator/template/darkfish/classpage.rhtml +0 -296
- data/lib/rdoc/generator/template/darkfish/filepage.rhtml +0 -124
- data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -32
- data/lib/rdoc/generator/template/darkfish/js/quicksearch.js +0 -114
- data/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js +0 -10
- data/lib/rdoc/generator/template/darkfish/rdoc.css +0 -706
- data/lib/rdoc/markup/formatter_test_case.rb +0 -689
- data/lib/rdoc/markup/inline.rb +0 -137
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -116
- data/lib/rdoc/ruby_lex.rb +0 -1291
- data/lib/rdoc/ruby_token.rb +0 -416
- data/test/README +0 -1
- data/test/binary.dat +0 -0
- data/test/hidden.zip.txt +0 -1
- data/test/test.ja.rdoc +0 -10
- data/test/test.ja.txt +0 -8
- data/test/test.txt +0 -1
- data/test/test_attribute_manager.rb +0 -120
- data/test/test_rdoc_alias.rb +0 -13
- data/test/test_rdoc_any_method.rb +0 -126
- data/test/test_rdoc_attr.rb +0 -61
- data/test/test_rdoc_class_module.rb +0 -233
- data/test/test_rdoc_code_object.rb +0 -165
- data/test/test_rdoc_constant.rb +0 -15
- data/test/test_rdoc_context.rb +0 -370
- data/test/test_rdoc_encoding.rb +0 -166
- data/test/test_rdoc_generator_darkfish.rb +0 -119
- data/test/test_rdoc_generator_ri.rb +0 -76
- data/test/test_rdoc_include.rb +0 -96
- data/test/test_rdoc_markup.rb +0 -37
- data/test/test_rdoc_markup_attribute_manager.rb +0 -240
- data/test/test_rdoc_markup_document.rb +0 -51
- data/test/test_rdoc_markup_paragraph.rb +0 -9
- data/test/test_rdoc_markup_parser.rb +0 -1395
- data/test/test_rdoc_markup_pre_process.rb +0 -185
- data/test/test_rdoc_markup_raw.rb +0 -27
- data/test/test_rdoc_markup_to_ansi.rb +0 -328
- data/test/test_rdoc_markup_to_bs.rb +0 -341
- data/test/test_rdoc_markup_to_html.rb +0 -335
- data/test/test_rdoc_markup_to_html_crossref.rb +0 -169
- data/test/test_rdoc_markup_to_rdoc.rb +0 -327
- data/test/test_rdoc_method_attr.rb +0 -122
- data/test/test_rdoc_normal_class.rb +0 -17
- data/test/test_rdoc_normal_module.rb +0 -31
- data/test/test_rdoc_options.rb +0 -342
- data/test/test_rdoc_parser.rb +0 -83
- data/test/test_rdoc_parser_c.rb +0 -912
- data/test/test_rdoc_parser_ruby.rb +0 -1754
- data/test/test_rdoc_parser_simple.rb +0 -99
- data/test/test_rdoc_rdoc.rb +0 -164
- data/test/test_rdoc_require.rb +0 -25
- data/test/test_rdoc_ri_driver.rb +0 -846
- data/test/test_rdoc_ri_paths.rb +0 -43
- data/test/test_rdoc_ri_store.rb +0 -352
- data/test/test_rdoc_ruby_lex.rb +0 -23
- data/test/test_rdoc_stats.rb +0 -38
- data/test/test_rdoc_task.rb +0 -92
- data/test/test_rdoc_text.rb +0 -251
- data/test/test_rdoc_top_level.rb +0 -120
- data/test/xref_data.rb +0 -62
- data/test/xref_test_case.rb +0 -61
- data.tar.gz.sig +0 -3
- metadata.gz.sig +0 -0
data/lib/rdoc/task.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#--
|
2
3
|
# Copyright (c) 2003, 2004 Jim Weirich, 2009 Eric Hodel
|
3
4
|
#
|
@@ -21,25 +22,23 @@
|
|
21
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
23
|
#++
|
23
24
|
|
24
|
-
require 'rubygems'
|
25
25
|
begin
|
26
26
|
gem 'rdoc'
|
27
27
|
rescue Gem::LoadError
|
28
|
-
end
|
28
|
+
end unless defined?(RDoc)
|
29
29
|
|
30
30
|
begin
|
31
31
|
gem 'rake'
|
32
32
|
rescue Gem::LoadError
|
33
|
-
end
|
33
|
+
end unless defined?(Rake)
|
34
34
|
|
35
35
|
require 'rdoc'
|
36
36
|
require 'rake'
|
37
37
|
require 'rake/tasklib'
|
38
38
|
|
39
39
|
##
|
40
|
-
#
|
41
|
-
#
|
42
|
-
# The RDoc::Task will create the following targets:
|
40
|
+
# RDoc::Task creates the following rake tasks to generate and clean up RDoc
|
41
|
+
# output:
|
43
42
|
#
|
44
43
|
# [rdoc]
|
45
44
|
# Main task for this RDoc task.
|
@@ -53,15 +52,14 @@ require 'rake/tasklib'
|
|
53
52
|
#
|
54
53
|
# Simple Example:
|
55
54
|
#
|
56
|
-
# gem 'rdoc'
|
57
55
|
# require 'rdoc/task'
|
58
56
|
#
|
59
|
-
# RDoc::Task.new do |
|
60
|
-
#
|
61
|
-
#
|
57
|
+
# RDoc::Task.new do |rdoc|
|
58
|
+
# rdoc.main = "README.rdoc"
|
59
|
+
# rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb")
|
62
60
|
# end
|
63
61
|
#
|
64
|
-
# The +
|
62
|
+
# The +rdoc+ object passed to the block is an RDoc::Task object. See the
|
65
63
|
# attributes list for the RDoc::Task class for available customization options.
|
66
64
|
#
|
67
65
|
# == Specifying different task names
|
@@ -70,13 +68,12 @@ require 'rake/tasklib'
|
|
70
68
|
# generating two sets of documentation. For instance, if you want to have a
|
71
69
|
# development set of documentation including private methods:
|
72
70
|
#
|
73
|
-
# gem 'rdoc'
|
74
71
|
# require 'rdoc/task'
|
75
72
|
#
|
76
|
-
# RDoc::Task.new :rdoc_dev do |
|
77
|
-
#
|
78
|
-
#
|
79
|
-
#
|
73
|
+
# RDoc::Task.new :rdoc_dev do |rdoc|
|
74
|
+
# rdoc.main = "README.doc"
|
75
|
+
# rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb")
|
76
|
+
# rdoc.options << "--all"
|
80
77
|
# end
|
81
78
|
#
|
82
79
|
# The tasks would then be named :<em>rdoc_dev</em>,
|
@@ -88,7 +85,6 @@ require 'rake/tasklib'
|
|
88
85
|
#
|
89
86
|
# For example:
|
90
87
|
#
|
91
|
-
# gem 'rdoc'
|
92
88
|
# require 'rdoc/task'
|
93
89
|
#
|
94
90
|
# RDoc::Task.new(:rdoc => "rdoc", :clobber_rdoc => "rdoc:clean",
|
@@ -104,6 +100,12 @@ class RDoc::Task < Rake::TaskLib
|
|
104
100
|
|
105
101
|
attr_accessor :name
|
106
102
|
|
103
|
+
##
|
104
|
+
# Comment markup format. rdoc, rd and tomdoc are supported. (default is
|
105
|
+
# 'rdoc')
|
106
|
+
|
107
|
+
attr_accessor :markup
|
108
|
+
|
107
109
|
##
|
108
110
|
# Name of directory to receive the html output files. (default is "html")
|
109
111
|
|
@@ -126,7 +128,8 @@ class RDoc::Task < Rake::TaskLib
|
|
126
128
|
attr_accessor :template
|
127
129
|
|
128
130
|
##
|
129
|
-
# Name of format generator (
|
131
|
+
# Name of format generator (<tt>--format</tt>) used by rdoc. (defaults to
|
132
|
+
# rdoc's default)
|
130
133
|
|
131
134
|
attr_accessor :generator
|
132
135
|
|
@@ -149,17 +152,45 @@ class RDoc::Task < Rake::TaskLib
|
|
149
152
|
# Create an RDoc task with the given name. See the RDoc::Task class overview
|
150
153
|
# for documentation.
|
151
154
|
|
152
|
-
def initialize
|
153
|
-
|
154
|
-
invalid_options = name.keys.map { |k| k.to_sym } -
|
155
|
-
[:rdoc, :clobber_rdoc, :rerdoc]
|
155
|
+
def initialize name = :rdoc # :yield: self
|
156
|
+
defaults
|
156
157
|
|
157
|
-
|
158
|
-
raise ArgumentError, "invalid options: #{invalid_options.join(", ")}"
|
159
|
-
end
|
160
|
-
end
|
158
|
+
check_names name
|
161
159
|
|
162
160
|
@name = name
|
161
|
+
|
162
|
+
yield self if block_given?
|
163
|
+
|
164
|
+
define
|
165
|
+
end
|
166
|
+
|
167
|
+
##
|
168
|
+
# Ensures that +names+ only includes names for the :rdoc, :clobber_rdoc and
|
169
|
+
# :rerdoc. If other names are given an ArgumentError is raised.
|
170
|
+
|
171
|
+
def check_names names
|
172
|
+
return unless Hash === names
|
173
|
+
|
174
|
+
invalid_options =
|
175
|
+
names.keys.map { |k| k.to_sym } - [:rdoc, :clobber_rdoc, :rerdoc]
|
176
|
+
|
177
|
+
unless invalid_options.empty? then
|
178
|
+
raise ArgumentError, "invalid options: #{invalid_options.join ', '}"
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
##
|
183
|
+
# Task description for the clobber rdoc task or its renamed equivalent
|
184
|
+
|
185
|
+
def clobber_task_description
|
186
|
+
"Remove RDoc HTML files"
|
187
|
+
end
|
188
|
+
|
189
|
+
##
|
190
|
+
# Sets default task values
|
191
|
+
|
192
|
+
def defaults
|
193
|
+
@name = :rdoc
|
163
194
|
@rdoc_files = Rake::FileList.new
|
164
195
|
@rdoc_dir = 'html'
|
165
196
|
@main = nil
|
@@ -167,14 +198,12 @@ class RDoc::Task < Rake::TaskLib
|
|
167
198
|
@template = nil
|
168
199
|
@generator = nil
|
169
200
|
@options = []
|
170
|
-
yield self if block_given?
|
171
|
-
define
|
172
201
|
end
|
173
202
|
|
174
203
|
##
|
175
204
|
# All source is inline now. This method is deprecated
|
176
205
|
|
177
|
-
def inline_source
|
206
|
+
def inline_source # :nodoc:
|
178
207
|
warn "RDoc::Task#inline_source is deprecated"
|
179
208
|
true
|
180
209
|
end
|
@@ -190,13 +219,13 @@ class RDoc::Task < Rake::TaskLib
|
|
190
219
|
# Create the tasks defined by this task lib.
|
191
220
|
|
192
221
|
def define
|
193
|
-
desc
|
222
|
+
desc rdoc_task_description
|
194
223
|
task rdoc_task_name
|
195
224
|
|
196
|
-
desc
|
225
|
+
desc rerdoc_task_description
|
197
226
|
task rerdoc_task_name => [clobber_task_name, rdoc_task_name]
|
198
227
|
|
199
|
-
desc
|
228
|
+
desc clobber_task_description
|
200
229
|
task clobber_task_name do
|
201
230
|
rm_r @rdoc_dir rescue nil
|
202
231
|
end
|
@@ -215,11 +244,8 @@ class RDoc::Task < Rake::TaskLib
|
|
215
244
|
@before_running_rdoc.call if @before_running_rdoc
|
216
245
|
args = option_list + @rdoc_files
|
217
246
|
|
218
|
-
if Rake.application.options.trace
|
219
|
-
|
220
|
-
end
|
221
|
-
require 'rdoc/rdoc'
|
222
|
-
RDoc::RDoc.new.document(args)
|
247
|
+
$stderr.puts "rdoc #{args.join ' '}" if Rake.application.options.trace
|
248
|
+
RDoc::RDoc.new.document args
|
223
249
|
end
|
224
250
|
|
225
251
|
self
|
@@ -230,11 +256,12 @@ class RDoc::Task < Rake::TaskLib
|
|
230
256
|
|
231
257
|
def option_list
|
232
258
|
result = @options.dup
|
233
|
-
result << "-o"
|
234
|
-
result << "--main"
|
235
|
-
result << "--
|
236
|
-
result << "
|
237
|
-
result <<
|
259
|
+
result << "-o" << @rdoc_dir
|
260
|
+
result << "--main" << main if main
|
261
|
+
result << "--markup" << markup if markup
|
262
|
+
result << "--title" << title if title
|
263
|
+
result << "-T" << template if template
|
264
|
+
result << '-f' << generator if generator
|
238
265
|
result
|
239
266
|
end
|
240
267
|
|
@@ -247,10 +274,24 @@ class RDoc::Task < Rake::TaskLib
|
|
247
274
|
@before_running_rdoc = block
|
248
275
|
end
|
249
276
|
|
277
|
+
##
|
278
|
+
# Task description for the rdoc task or its renamed equivalent
|
279
|
+
|
280
|
+
def rdoc_task_description
|
281
|
+
'Build RDoc HTML files'
|
282
|
+
end
|
283
|
+
|
284
|
+
##
|
285
|
+
# Task description for the rerdoc task or its renamed description
|
286
|
+
|
287
|
+
def rerdoc_task_description
|
288
|
+
"Rebuild RDoc HTML files"
|
289
|
+
end
|
290
|
+
|
250
291
|
private
|
251
292
|
|
252
293
|
def rdoc_target
|
253
|
-
"#{rdoc_dir}/
|
294
|
+
"#{rdoc_dir}/created.rid"
|
254
295
|
end
|
255
296
|
|
256
297
|
def rdoc_task_name
|
@@ -286,4 +327,3 @@ module Rake
|
|
286
327
|
|
287
328
|
end
|
288
329
|
# :startdoc:
|
289
|
-
|
data/lib/rdoc/text.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
##
|
4
4
|
# For RDoc::Text#to_html
|
@@ -10,6 +10,21 @@ require 'strscan'
|
|
10
10
|
|
11
11
|
module RDoc::Text
|
12
12
|
|
13
|
+
attr_accessor :language
|
14
|
+
|
15
|
+
##
|
16
|
+
# Maps markup formats to classes that can parse them. If the format is
|
17
|
+
# unknown, "rdoc" format is used.
|
18
|
+
|
19
|
+
MARKUP_FORMAT = {
|
20
|
+
'markdown' => RDoc::Markdown,
|
21
|
+
'rdoc' => RDoc::Markup,
|
22
|
+
'rd' => RDoc::RD,
|
23
|
+
'tomdoc' => RDoc::TomDoc,
|
24
|
+
}
|
25
|
+
|
26
|
+
MARKUP_FORMAT.default = RDoc::Markup
|
27
|
+
|
13
28
|
##
|
14
29
|
# Maps an encoding to a Hash of characters properly transcoded for that
|
15
30
|
# encoding.
|
@@ -28,7 +43,7 @@ module RDoc::Text
|
|
28
43
|
:open_squote => encode_fallback('‘', encoding, '\''),
|
29
44
|
:trademark => encode_fallback('®', encoding, '(r)'),
|
30
45
|
}
|
31
|
-
end
|
46
|
+
end
|
32
47
|
|
33
48
|
##
|
34
49
|
# Transcodes +character+ to +encoding+ with a +fallback+ character.
|
@@ -45,9 +60,11 @@ module RDoc::Text
|
|
45
60
|
expanded = []
|
46
61
|
|
47
62
|
text.each_line do |line|
|
48
|
-
line.gsub!(
|
49
|
-
"#{$1}#{$2}#{' ' * (8 - $2.size)}"
|
50
|
-
|
63
|
+
nil while line.gsub!(/(?:\G|\r)((?:.{8})*?)([^\t\r\n]{0,7})\t/) do
|
64
|
+
r = "#{$1}#{$2}#{' ' * (8 - $2.size)}"
|
65
|
+
r = RDoc::Encoding.change_encoding r, text.encoding
|
66
|
+
r
|
67
|
+
end
|
51
68
|
|
52
69
|
expanded << line
|
53
70
|
end
|
@@ -59,22 +76,17 @@ module RDoc::Text
|
|
59
76
|
# Flush +text+ left based on the shortest line
|
60
77
|
|
61
78
|
def flush_left text
|
62
|
-
|
79
|
+
indent = 9999
|
63
80
|
|
64
81
|
text.each_line do |line|
|
65
|
-
|
82
|
+
line_indent = line =~ /\S/ || 9999
|
83
|
+
indent = line_indent if indent > line_indent
|
66
84
|
end
|
67
85
|
|
68
|
-
|
69
|
-
|
70
|
-
flush = []
|
71
|
-
|
72
|
-
text.each_line do |line|
|
73
|
-
line[/^ {0,#{indent}}/] = ''
|
74
|
-
flush << line
|
75
|
-
end
|
86
|
+
empty = ''
|
87
|
+
empty = RDoc::Encoding.change_encoding empty, text.encoding
|
76
88
|
|
77
|
-
|
89
|
+
text.gsub(/^ {0,#{indent}}/, empty)
|
78
90
|
end
|
79
91
|
|
80
92
|
##
|
@@ -83,9 +95,16 @@ module RDoc::Text
|
|
83
95
|
# Requires the including class to implement #formatter
|
84
96
|
|
85
97
|
def markup text
|
86
|
-
|
87
|
-
|
88
|
-
|
98
|
+
if @store.rdoc.options
|
99
|
+
locale = @store.rdoc.options.locale
|
100
|
+
else
|
101
|
+
locale = nil
|
102
|
+
end
|
103
|
+
if locale
|
104
|
+
i18n_text = RDoc::I18n::Text.new(text)
|
105
|
+
text = i18n_text.translate(locale)
|
106
|
+
end
|
107
|
+
parse(text).accept formatter
|
89
108
|
end
|
90
109
|
|
91
110
|
##
|
@@ -94,44 +113,39 @@ module RDoc::Text
|
|
94
113
|
def normalize_comment text
|
95
114
|
return text if text.empty?
|
96
115
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
116
|
+
case language
|
117
|
+
when :ruby
|
118
|
+
text = strip_hashes text
|
119
|
+
when :c
|
120
|
+
text = strip_stars text
|
121
|
+
end
|
122
|
+
text = expand_tabs text
|
123
|
+
text = flush_left text
|
124
|
+
text = strip_newlines text
|
125
|
+
text
|
101
126
|
end
|
102
127
|
|
103
128
|
##
|
104
129
|
# Normalizes +text+ then builds a RDoc::Markup::Document from it
|
105
130
|
|
106
|
-
def parse text
|
131
|
+
def parse text, format = 'rdoc'
|
107
132
|
return text if RDoc::Markup::Document === text
|
133
|
+
return text.parse if RDoc::Comment === text
|
108
134
|
|
109
|
-
text = normalize_comment text
|
135
|
+
text = normalize_comment text # TODO remove, should not be necessary
|
110
136
|
|
111
137
|
return RDoc::Markup::Document.new if text =~ /\A\n*\z/
|
112
138
|
|
113
|
-
|
114
|
-
|
115
|
-
$stderr.puts <<-EOF
|
116
|
-
While parsing markup, RDoc encountered a #{e.class}:
|
117
|
-
|
118
|
-
#{e}
|
119
|
-
\tfrom #{e.backtrace.join "\n\tfrom "}
|
120
|
-
|
121
|
-
---8<---
|
122
|
-
#{text}
|
123
|
-
---8<---
|
124
|
-
|
125
|
-
RDoc #{RDoc::VERSION}
|
126
|
-
|
127
|
-
Ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} #{RUBY_RELEASE_DATE}
|
139
|
+
MARKUP_FORMAT[format].parse text
|
140
|
+
end
|
128
141
|
|
129
|
-
|
142
|
+
##
|
143
|
+
# The first +limit+ characters of +text+ as HTML
|
130
144
|
|
131
|
-
|
145
|
+
def snippet text, limit = 100
|
146
|
+
document = parse text
|
132
147
|
|
133
|
-
|
134
|
-
raise
|
148
|
+
RDoc::Markup::ToHtmlSnippet.new(options, limit).convert document
|
135
149
|
end
|
136
150
|
|
137
151
|
##
|
@@ -139,25 +153,40 @@ http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse
|
|
139
153
|
|
140
154
|
def strip_hashes text
|
141
155
|
return text if text =~ /^(?>\s*)[^\#]/
|
142
|
-
|
156
|
+
|
157
|
+
empty = ''
|
158
|
+
empty = RDoc::Encoding.change_encoding empty, text.encoding
|
159
|
+
|
160
|
+
text.gsub(/^\s*(#+)/) { $1.tr '#', ' ' }.gsub(/^\s+$/, empty)
|
143
161
|
end
|
144
162
|
|
145
163
|
##
|
146
164
|
# Strips leading and trailing \n characters from +text+
|
147
165
|
|
148
166
|
def strip_newlines text
|
149
|
-
text.gsub(/\A\n*(.*?)\n*\z/m
|
167
|
+
text.gsub(/\A\n*(.*?)\n*\z/m) do $1 end # block preserves String encoding
|
150
168
|
end
|
151
169
|
|
152
170
|
##
|
153
171
|
# Strips /* */ style comments
|
154
172
|
|
155
173
|
def strip_stars text
|
156
|
-
text
|
157
|
-
|
158
|
-
text.
|
159
|
-
|
160
|
-
text.gsub
|
174
|
+
return text unless text =~ %r%/\*.*\*/%m
|
175
|
+
|
176
|
+
encoding = text.encoding
|
177
|
+
|
178
|
+
text = text.gsub %r%Document-method:\s+[\w:.#=!?|^&<>~+\-/*\%@`\[\]]+%, ''
|
179
|
+
|
180
|
+
space = ' '
|
181
|
+
space = RDoc::Encoding.change_encoding space, encoding if encoding
|
182
|
+
|
183
|
+
text.sub! %r%/\*+% do space * $&.length end
|
184
|
+
text.sub! %r%\*+/% do space * $&.length end
|
185
|
+
text.gsub! %r%^[ \t]*\*%m do space * $&.length end
|
186
|
+
|
187
|
+
empty = ''
|
188
|
+
empty = RDoc::Encoding.change_encoding empty, encoding if encoding
|
189
|
+
text.gsub(/^\s+$/, empty)
|
161
190
|
end
|
162
191
|
|
163
192
|
##
|
@@ -165,24 +194,9 @@ http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse
|
|
165
194
|
# trademark symbols in +text+ to properly encoded characters.
|
166
195
|
|
167
196
|
def to_html text
|
168
|
-
|
169
|
-
html = ''.encode text.encoding
|
197
|
+
html = (''.encode text.encoding).dup
|
170
198
|
|
171
|
-
|
172
|
-
else
|
173
|
-
html = ''
|
174
|
-
encoded = {
|
175
|
-
:close_dquote => '”',
|
176
|
-
:close_squote => '’',
|
177
|
-
:copyright => '©',
|
178
|
-
:ellipsis => '…',
|
179
|
-
:em_dash => '—',
|
180
|
-
:en_dash => '–',
|
181
|
-
:open_dquote => '“',
|
182
|
-
:open_squote => '‘',
|
183
|
-
:trademark => '®',
|
184
|
-
}
|
185
|
-
end
|
199
|
+
encoded = RDoc::Text::TO_HTML_CHARACTERS[text.encoding]
|
186
200
|
|
187
201
|
s = StringScanner.new text
|
188
202
|
insquotes = false
|
@@ -191,10 +205,10 @@ http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse
|
|
191
205
|
|
192
206
|
until s.eos? do
|
193
207
|
case
|
194
|
-
when s.scan(/<tt
|
208
|
+
when s.scan(/<(tt|code)>.*?<\/\1>/) then # skip contents of tt
|
195
209
|
html << s.matched.gsub('\\\\', '\\')
|
196
|
-
when s.scan(/<tt>.*?/) then
|
197
|
-
warn
|
210
|
+
when s.scan(/<(tt|code)>.*?/) then
|
211
|
+
warn "mismatched <#{s[1]}> tag" # TODO signal file/line
|
198
212
|
html << s.matched
|
199
213
|
when s.scan(/<[^>]+\/?s*>/) then # skip HTML tags
|
200
214
|
html << s.matched
|
@@ -255,5 +269,36 @@ http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse
|
|
255
269
|
html
|
256
270
|
end
|
257
271
|
|
258
|
-
|
272
|
+
##
|
273
|
+
# Wraps +txt+ to +line_len+
|
274
|
+
|
275
|
+
def wrap(txt, line_len = 76)
|
276
|
+
res = []
|
277
|
+
sp = 0
|
278
|
+
ep = txt.length
|
279
|
+
|
280
|
+
while sp < ep
|
281
|
+
# scan back for a space
|
282
|
+
p = sp + line_len - 1
|
283
|
+
if p >= ep
|
284
|
+
p = ep
|
285
|
+
else
|
286
|
+
while p > sp and txt[p] != ?\s
|
287
|
+
p -= 1
|
288
|
+
end
|
289
|
+
if p <= sp
|
290
|
+
p = sp + line_len
|
291
|
+
while p < ep and txt[p] != ?\s
|
292
|
+
p += 1
|
293
|
+
end
|
294
|
+
end
|
295
|
+
end
|
296
|
+
res << txt[sp...p] << "\n"
|
297
|
+
sp = p
|
298
|
+
sp += 1 while sp < ep and txt[sp] == ?\s
|
299
|
+
end
|
259
300
|
|
301
|
+
res.join.strip
|
302
|
+
end
|
303
|
+
|
304
|
+
end
|
data/lib/rdoc/token_stream.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# A TokenStream is a list of tokens, gathered during the parse of some entity
|
3
4
|
# (say a method). Entities populate these streams by being registered with the
|
@@ -7,14 +8,82 @@
|
|
7
8
|
|
8
9
|
module RDoc::TokenStream
|
9
10
|
|
11
|
+
##
|
12
|
+
# Converts +token_stream+ to HTML wrapping various tokens with
|
13
|
+
# <tt><span></tt> elements. Some tokens types are wrapped in spans
|
14
|
+
# with the given class names. Other token types are not wrapped in spans.
|
15
|
+
|
16
|
+
def self.to_html token_stream
|
17
|
+
starting_title = false
|
18
|
+
|
19
|
+
token_stream.map do |t|
|
20
|
+
next unless t
|
21
|
+
|
22
|
+
style = case t[:kind]
|
23
|
+
when :on_const then 'ruby-constant'
|
24
|
+
when :on_kw then 'ruby-keyword'
|
25
|
+
when :on_ivar then 'ruby-ivar'
|
26
|
+
when :on_cvar then 'ruby-identifier'
|
27
|
+
when :on_gvar then 'ruby-identifier'
|
28
|
+
when '=' != t[:text] && :on_op
|
29
|
+
then 'ruby-operator'
|
30
|
+
when :on_tlambda then 'ruby-operator'
|
31
|
+
when :on_ident then 'ruby-identifier'
|
32
|
+
when :on_label then 'ruby-value'
|
33
|
+
when :on_backref, :on_dstring
|
34
|
+
then 'ruby-node'
|
35
|
+
when :on_comment then 'ruby-comment'
|
36
|
+
when :on_embdoc then 'ruby-comment'
|
37
|
+
when :on_regexp then 'ruby-regexp'
|
38
|
+
when :on_tstring then 'ruby-string'
|
39
|
+
when :on_int, :on_float,
|
40
|
+
:on_rational, :on_imaginary,
|
41
|
+
:on_heredoc,
|
42
|
+
:on_symbol, :on_CHAR then 'ruby-value'
|
43
|
+
when :on_heredoc_beg, :on_heredoc_end
|
44
|
+
then 'ruby-identifier'
|
45
|
+
end
|
46
|
+
|
47
|
+
comment_with_nl = false
|
48
|
+
if :on_comment == t[:kind] or :on_embdoc == t[:kind] or :on_heredoc_end == t[:kind]
|
49
|
+
comment_with_nl = true if "\n" == t[:text][-1]
|
50
|
+
text = t[:text].rstrip
|
51
|
+
else
|
52
|
+
text = t[:text]
|
53
|
+
end
|
54
|
+
|
55
|
+
if :on_ident == t[:kind] && starting_title
|
56
|
+
starting_title = false
|
57
|
+
style = 'ruby-identifier ruby-title'
|
58
|
+
end
|
59
|
+
|
60
|
+
if :on_kw == t[:kind] and 'def' == t[:text]
|
61
|
+
starting_title = true
|
62
|
+
end
|
63
|
+
|
64
|
+
text = CGI.escapeHTML text
|
65
|
+
|
66
|
+
if style then
|
67
|
+
"<span class=\"#{style}\">#{text}</span>#{"\n" if comment_with_nl}"
|
68
|
+
else
|
69
|
+
text
|
70
|
+
end
|
71
|
+
end.join
|
72
|
+
end
|
73
|
+
|
10
74
|
##
|
11
75
|
# Adds +tokens+ to the collected tokens
|
12
76
|
|
13
|
-
def add_tokens(
|
14
|
-
|
77
|
+
def add_tokens(tokens)
|
78
|
+
@token_stream.concat(tokens)
|
15
79
|
end
|
16
80
|
|
17
|
-
|
81
|
+
##
|
82
|
+
# Adds one +token+ to the collected tokens
|
83
|
+
|
84
|
+
def add_token(token)
|
85
|
+
@token_stream.push(token)
|
86
|
+
end
|
18
87
|
|
19
88
|
##
|
20
89
|
# Starts collecting tokens
|
@@ -43,7 +112,7 @@ module RDoc::TokenStream
|
|
43
112
|
# Returns a string representation of the token stream
|
44
113
|
|
45
114
|
def tokens_to_s
|
46
|
-
token_stream.map { |token| token
|
115
|
+
token_stream.compact.map { |token| token[:text] }.join ''
|
47
116
|
end
|
48
117
|
|
49
118
|
end
|