gitlab-rdoc 6.3.2
Sign up to get free protection for your applications and to get access to all the features.
- 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 +133 -0
- data/RI.rdoc +57 -0
- data/Rakefile +101 -0
- data/TODO.rdoc +59 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/exe/rdoc +44 -0
- data/exe/ri +12 -0
- data/lib/rdoc/alias.rb +112 -0
- data/lib/rdoc/anon_class.rb +11 -0
- data/lib/rdoc/any_method.rb +361 -0
- data/lib/rdoc/attr.rb +176 -0
- data/lib/rdoc/class_module.rb +802 -0
- data/lib/rdoc/code_object.rb +421 -0
- data/lib/rdoc/code_objects.rb +6 -0
- data/lib/rdoc/comment.rb +250 -0
- data/lib/rdoc/constant.rb +187 -0
- data/lib/rdoc/context/section.rb +232 -0
- data/lib/rdoc/context.rb +1266 -0
- data/lib/rdoc/cross_reference.rb +202 -0
- data/lib/rdoc/encoding.rb +136 -0
- data/lib/rdoc/erb_partial.rb +19 -0
- data/lib/rdoc/erbio.rb +42 -0
- data/lib/rdoc/extend.rb +10 -0
- data/lib/rdoc/generator/darkfish.rb +790 -0
- data/lib/rdoc/generator/json_index.rb +300 -0
- data/lib/rdoc/generator/markup.rb +160 -0
- 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 +31 -0
- data/lib/rdoc/generator/template/darkfish/.document +0 -0
- 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/brick.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/brick_link.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bug.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_black.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/date.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/find.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif +0 -0
- data/lib/rdoc/generator/template/darkfish/images/macFFBgHack.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/package.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_green.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_white_text.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_white_width.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/plugin.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/ruby.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_green.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/wrench.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/wrench_orange.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/zoom.png +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +22 -0
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +84 -0
- 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 +51 -0
- data/lib/rdoc/ghost_method.rb +7 -0
- 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 +10 -0
- data/lib/rdoc/known_classes.rb +73 -0
- data/lib/rdoc/markdown/entities.rb +2132 -0
- data/lib/rdoc/markdown/literals.kpeg +23 -0
- data/lib/rdoc/markdown/literals.rb +417 -0
- data/lib/rdoc/markdown.kpeg +1237 -0
- data/lib/rdoc/markdown.rb +16685 -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 +409 -0
- data/lib/rdoc/markup/attributes.rb +71 -0
- data/lib/rdoc/markup/blank_line.rb +28 -0
- data/lib/rdoc/markup/block_quote.rb +15 -0
- data/lib/rdoc/markup/document.rb +165 -0
- data/lib/rdoc/markup/formatter.rb +266 -0
- data/lib/rdoc/markup/hard_break.rb +32 -0
- data/lib/rdoc/markup/heading.rb +79 -0
- data/lib/rdoc/markup/include.rb +43 -0
- data/lib/rdoc/markup/indented_paragraph.rb +48 -0
- data/lib/rdoc/markup/list.rb +102 -0
- data/lib/rdoc/markup/list_item.rb +100 -0
- data/lib/rdoc/markup/paragraph.rb +29 -0
- data/lib/rdoc/markup/parser.rb +575 -0
- data/lib/rdoc/markup/pre_process.rb +296 -0
- data/lib/rdoc/markup/raw.rb +70 -0
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/rule.rb +21 -0
- data/lib/rdoc/markup/table.rb +47 -0
- data/lib/rdoc/markup/to_ansi.rb +94 -0
- data/lib/rdoc/markup/to_bs.rb +77 -0
- data/lib/rdoc/markup/to_html.rb +444 -0
- data/lib/rdoc/markup/to_html_crossref.rb +176 -0
- 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 +362 -0
- data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
- data/lib/rdoc/markup/to_test.rb +70 -0
- data/lib/rdoc/markup/to_tt_only.rb +121 -0
- data/lib/rdoc/markup/verbatim.rb +84 -0
- data/lib/rdoc/markup.rb +867 -0
- data/lib/rdoc/meta_method.rb +7 -0
- data/lib/rdoc/method_attr.rb +419 -0
- data/lib/rdoc/mixin.rb +121 -0
- data/lib/rdoc/normal_class.rb +93 -0
- data/lib/rdoc/normal_module.rb +74 -0
- data/lib/rdoc/options.rb +1285 -0
- data/lib/rdoc/parser/c.rb +1225 -0
- 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 +2327 -0
- data/lib/rdoc/parser/ruby_tools.rb +167 -0
- data/lib/rdoc/parser/simple.rb +61 -0
- data/lib/rdoc/parser/text.rb +12 -0
- data/lib/rdoc/parser.rb +277 -0
- 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 +579 -0
- data/lib/rdoc/require.rb +52 -0
- data/lib/rdoc/ri/driver.rb +1572 -0
- data/lib/rdoc/ri/formatter.rb +6 -0
- data/lib/rdoc/ri/paths.rb +171 -0
- data/lib/rdoc/ri/store.rb +7 -0
- data/lib/rdoc/ri/task.rb +71 -0
- data/lib/rdoc/ri.rb +21 -0
- data/lib/rdoc/rubygems_hook.rb +246 -0
- data/lib/rdoc/servlet.rb +451 -0
- data/lib/rdoc/single_class.rb +26 -0
- data/lib/rdoc/stats/normal.rb +58 -0
- data/lib/rdoc/stats/quiet.rb +60 -0
- data/lib/rdoc/stats/verbose.rb +46 -0
- data/lib/rdoc/stats.rb +462 -0
- data/lib/rdoc/store.rb +979 -0
- data/lib/rdoc/task.rb +329 -0
- data/lib/rdoc/text.rb +304 -0
- data/lib/rdoc/token_stream.rb +119 -0
- data/lib/rdoc/tom_doc.rb +263 -0
- data/lib/rdoc/top_level.rb +289 -0
- data/lib/rdoc/version.rb +8 -0
- data/lib/rdoc.rb +201 -0
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +249 -0
- metadata +279 -0
data/lib/rdoc/task.rb
ADDED
@@ -0,0 +1,329 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#--
|
3
|
+
# Copyright (c) 2003, 2004 Jim Weirich, 2009 Eric Hodel
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
# a copy of this software and associated documentation files (the
|
7
|
+
# "Software"), to deal in the Software without restriction, including
|
8
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
# the following conditions:
|
12
|
+
#
|
13
|
+
# The above copyright notice and this permission notice shall be
|
14
|
+
# included in all copies or substantial portions of the Software.
|
15
|
+
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
|
+
#++
|
24
|
+
|
25
|
+
begin
|
26
|
+
gem 'rdoc'
|
27
|
+
rescue Gem::LoadError
|
28
|
+
end unless defined?(RDoc)
|
29
|
+
|
30
|
+
begin
|
31
|
+
gem 'rake'
|
32
|
+
rescue Gem::LoadError
|
33
|
+
end unless defined?(Rake)
|
34
|
+
|
35
|
+
require 'rdoc'
|
36
|
+
require 'rake'
|
37
|
+
require 'rake/tasklib'
|
38
|
+
|
39
|
+
##
|
40
|
+
# RDoc::Task creates the following rake tasks to generate and clean up RDoc
|
41
|
+
# output:
|
42
|
+
#
|
43
|
+
# [rdoc]
|
44
|
+
# Main task for this RDoc task.
|
45
|
+
#
|
46
|
+
# [clobber_rdoc]
|
47
|
+
# Delete all the rdoc files. This target is automatically added to the main
|
48
|
+
# clobber target.
|
49
|
+
#
|
50
|
+
# [rerdoc]
|
51
|
+
# Rebuild the rdoc files from scratch, even if they are not out of date.
|
52
|
+
#
|
53
|
+
# Simple Example:
|
54
|
+
#
|
55
|
+
# require 'rdoc/task'
|
56
|
+
#
|
57
|
+
# RDoc::Task.new do |rdoc|
|
58
|
+
# rdoc.main = "README.rdoc"
|
59
|
+
# rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb")
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# The +rdoc+ object passed to the block is an RDoc::Task object. See the
|
63
|
+
# attributes list for the RDoc::Task class for available customization options.
|
64
|
+
#
|
65
|
+
# == Specifying different task names
|
66
|
+
#
|
67
|
+
# You may wish to give the task a different name, such as if you are
|
68
|
+
# generating two sets of documentation. For instance, if you want to have a
|
69
|
+
# development set of documentation including private methods:
|
70
|
+
#
|
71
|
+
# require 'rdoc/task'
|
72
|
+
#
|
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"
|
77
|
+
# end
|
78
|
+
#
|
79
|
+
# The tasks would then be named :<em>rdoc_dev</em>,
|
80
|
+
# :clobber_<em>rdoc_dev</em>, and :re<em>rdoc_dev</em>.
|
81
|
+
#
|
82
|
+
# If you wish to have completely different task names, then pass a Hash as
|
83
|
+
# first argument. With the <tt>:rdoc</tt>, <tt>:clobber_rdoc</tt> and
|
84
|
+
# <tt>:rerdoc</tt> options, you can customize the task names to your liking.
|
85
|
+
#
|
86
|
+
# For example:
|
87
|
+
#
|
88
|
+
# require 'rdoc/task'
|
89
|
+
#
|
90
|
+
# RDoc::Task.new(:rdoc => "rdoc", :clobber_rdoc => "rdoc:clean",
|
91
|
+
# :rerdoc => "rdoc:force")
|
92
|
+
#
|
93
|
+
# This will create the tasks <tt>:rdoc</tt>, <tt>:rdoc:clean</tt> and
|
94
|
+
# <tt>:rdoc:force</tt>.
|
95
|
+
|
96
|
+
class RDoc::Task < Rake::TaskLib
|
97
|
+
|
98
|
+
##
|
99
|
+
# Name of the main, top level task. (default is :rdoc)
|
100
|
+
|
101
|
+
attr_accessor :name
|
102
|
+
|
103
|
+
##
|
104
|
+
# Comment markup format. rdoc, rd and tomdoc are supported. (default is
|
105
|
+
# 'rdoc')
|
106
|
+
|
107
|
+
attr_accessor :markup
|
108
|
+
|
109
|
+
##
|
110
|
+
# Name of directory to receive the html output files. (default is "html")
|
111
|
+
|
112
|
+
attr_accessor :rdoc_dir
|
113
|
+
|
114
|
+
##
|
115
|
+
# Title of RDoc documentation. (defaults to rdoc's default)
|
116
|
+
|
117
|
+
attr_accessor :title
|
118
|
+
|
119
|
+
##
|
120
|
+
# Name of file to be used as the main, top level file of the RDoc. (default
|
121
|
+
# is none)
|
122
|
+
|
123
|
+
attr_accessor :main
|
124
|
+
|
125
|
+
##
|
126
|
+
# Name of template to be used by rdoc. (defaults to rdoc's default)
|
127
|
+
|
128
|
+
attr_accessor :template
|
129
|
+
|
130
|
+
##
|
131
|
+
# Name of format generator (<tt>--format</tt>) used by rdoc. (defaults to
|
132
|
+
# rdoc's default)
|
133
|
+
|
134
|
+
attr_accessor :generator
|
135
|
+
|
136
|
+
##
|
137
|
+
# List of files to be included in the rdoc generation. (default is [])
|
138
|
+
|
139
|
+
attr_accessor :rdoc_files
|
140
|
+
|
141
|
+
##
|
142
|
+
# Additional list of options to be passed rdoc. (default is [])
|
143
|
+
|
144
|
+
attr_accessor :options
|
145
|
+
|
146
|
+
##
|
147
|
+
# Whether to run the rdoc process as an external shell (default is false)
|
148
|
+
|
149
|
+
attr_accessor :external
|
150
|
+
|
151
|
+
##
|
152
|
+
# Create an RDoc task with the given name. See the RDoc::Task class overview
|
153
|
+
# for documentation.
|
154
|
+
|
155
|
+
def initialize name = :rdoc # :yield: self
|
156
|
+
defaults
|
157
|
+
|
158
|
+
check_names name
|
159
|
+
|
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
|
194
|
+
@rdoc_files = Rake::FileList.new
|
195
|
+
@rdoc_dir = 'html'
|
196
|
+
@main = nil
|
197
|
+
@title = nil
|
198
|
+
@template = nil
|
199
|
+
@generator = nil
|
200
|
+
@options = []
|
201
|
+
end
|
202
|
+
|
203
|
+
##
|
204
|
+
# All source is inline now. This method is deprecated
|
205
|
+
|
206
|
+
def inline_source # :nodoc:
|
207
|
+
warn "RDoc::Task#inline_source is deprecated"
|
208
|
+
true
|
209
|
+
end
|
210
|
+
|
211
|
+
##
|
212
|
+
# All source is inline now. This method is deprecated
|
213
|
+
|
214
|
+
def inline_source=(value) # :nodoc:
|
215
|
+
warn "RDoc::Task#inline_source is deprecated"
|
216
|
+
end
|
217
|
+
|
218
|
+
##
|
219
|
+
# Create the tasks defined by this task lib.
|
220
|
+
|
221
|
+
def define
|
222
|
+
desc rdoc_task_description
|
223
|
+
task rdoc_task_name
|
224
|
+
|
225
|
+
desc rerdoc_task_description
|
226
|
+
task rerdoc_task_name => [clobber_task_name, rdoc_task_name]
|
227
|
+
|
228
|
+
desc clobber_task_description
|
229
|
+
task clobber_task_name do
|
230
|
+
rm_r @rdoc_dir rescue nil
|
231
|
+
end
|
232
|
+
|
233
|
+
task :clobber => [clobber_task_name]
|
234
|
+
|
235
|
+
directory @rdoc_dir
|
236
|
+
|
237
|
+
rdoc_target_deps = [
|
238
|
+
@rdoc_files,
|
239
|
+
Rake.application.rakefile
|
240
|
+
].flatten.compact
|
241
|
+
|
242
|
+
task rdoc_task_name => [rdoc_target]
|
243
|
+
file rdoc_target => rdoc_target_deps do
|
244
|
+
@before_running_rdoc.call if @before_running_rdoc
|
245
|
+
args = option_list + @rdoc_files
|
246
|
+
|
247
|
+
$stderr.puts "rdoc #{args.join ' '}" if Rake.application.options.trace
|
248
|
+
RDoc::RDoc.new.document args
|
249
|
+
end
|
250
|
+
|
251
|
+
self
|
252
|
+
end
|
253
|
+
|
254
|
+
##
|
255
|
+
# List of options that will be supplied to RDoc
|
256
|
+
|
257
|
+
def option_list
|
258
|
+
result = @options.dup
|
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
|
265
|
+
result
|
266
|
+
end
|
267
|
+
|
268
|
+
##
|
269
|
+
# The block passed to this method will be called just before running the
|
270
|
+
# RDoc generator. It is allowed to modify RDoc::Task attributes inside the
|
271
|
+
# block.
|
272
|
+
|
273
|
+
def before_running_rdoc(&block)
|
274
|
+
@before_running_rdoc = block
|
275
|
+
end
|
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
|
+
|
291
|
+
private
|
292
|
+
|
293
|
+
def rdoc_target
|
294
|
+
"#{rdoc_dir}/created.rid"
|
295
|
+
end
|
296
|
+
|
297
|
+
def rdoc_task_name
|
298
|
+
case name
|
299
|
+
when Hash then (name[:rdoc] || "rdoc").to_s
|
300
|
+
else name.to_s
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
def clobber_task_name
|
305
|
+
case name
|
306
|
+
when Hash then (name[:clobber_rdoc] || "clobber_rdoc").to_s
|
307
|
+
else "clobber_#{name}"
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
def rerdoc_task_name
|
312
|
+
case name
|
313
|
+
when Hash then (name[:rerdoc] || "rerdoc").to_s
|
314
|
+
else "re#{name}"
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
end
|
319
|
+
|
320
|
+
# :stopdoc:
|
321
|
+
module Rake
|
322
|
+
|
323
|
+
##
|
324
|
+
# For backwards compatibility
|
325
|
+
|
326
|
+
RDocTask = RDoc::Task
|
327
|
+
|
328
|
+
end
|
329
|
+
# :startdoc:
|
data/lib/rdoc/text.rb
ADDED
@@ -0,0 +1,304 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
##
|
4
|
+
# For RDoc::Text#to_html
|
5
|
+
|
6
|
+
require 'strscan'
|
7
|
+
|
8
|
+
##
|
9
|
+
# Methods for manipulating comment text
|
10
|
+
|
11
|
+
module RDoc::Text
|
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
|
+
|
28
|
+
##
|
29
|
+
# Maps an encoding to a Hash of characters properly transcoded for that
|
30
|
+
# encoding.
|
31
|
+
#
|
32
|
+
# See also encode_fallback.
|
33
|
+
|
34
|
+
TO_HTML_CHARACTERS = Hash.new do |h, encoding|
|
35
|
+
h[encoding] = {
|
36
|
+
:close_dquote => encode_fallback('”', encoding, '"'),
|
37
|
+
:close_squote => encode_fallback('’', encoding, '\''),
|
38
|
+
:copyright => encode_fallback('©', encoding, '(c)'),
|
39
|
+
:ellipsis => encode_fallback('…', encoding, '...'),
|
40
|
+
:em_dash => encode_fallback('—', encoding, '---'),
|
41
|
+
:en_dash => encode_fallback('–', encoding, '--'),
|
42
|
+
:open_dquote => encode_fallback('“', encoding, '"'),
|
43
|
+
:open_squote => encode_fallback('‘', encoding, '\''),
|
44
|
+
:trademark => encode_fallback('®', encoding, '(r)'),
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
##
|
49
|
+
# Transcodes +character+ to +encoding+ with a +fallback+ character.
|
50
|
+
|
51
|
+
def self.encode_fallback character, encoding, fallback
|
52
|
+
character.encode(encoding, :fallback => { character => fallback },
|
53
|
+
:undef => :replace, :replace => fallback)
|
54
|
+
end
|
55
|
+
|
56
|
+
##
|
57
|
+
# Expands tab characters in +text+ to eight spaces
|
58
|
+
|
59
|
+
def expand_tabs text
|
60
|
+
expanded = []
|
61
|
+
|
62
|
+
text.each_line do |line|
|
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
|
68
|
+
|
69
|
+
expanded << line
|
70
|
+
end
|
71
|
+
|
72
|
+
expanded.join
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
# Flush +text+ left based on the shortest line
|
77
|
+
|
78
|
+
def flush_left text
|
79
|
+
indent = 9999
|
80
|
+
|
81
|
+
text.each_line do |line|
|
82
|
+
line_indent = line =~ /\S/ || 9999
|
83
|
+
indent = line_indent if indent > line_indent
|
84
|
+
end
|
85
|
+
|
86
|
+
empty = ''
|
87
|
+
empty = RDoc::Encoding.change_encoding empty, text.encoding
|
88
|
+
|
89
|
+
text.gsub(/^ {0,#{indent}}/, empty)
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# Convert a string in markup format into HTML.
|
94
|
+
#
|
95
|
+
# Requires the including class to implement #formatter
|
96
|
+
|
97
|
+
def markup text
|
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
|
108
|
+
end
|
109
|
+
|
110
|
+
##
|
111
|
+
# Strips hashes, expands tabs then flushes +text+ to the left
|
112
|
+
|
113
|
+
def normalize_comment text
|
114
|
+
return text if text.empty?
|
115
|
+
|
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
|
126
|
+
end
|
127
|
+
|
128
|
+
##
|
129
|
+
# Normalizes +text+ then builds a RDoc::Markup::Document from it
|
130
|
+
|
131
|
+
def parse text, format = 'rdoc'
|
132
|
+
return text if RDoc::Markup::Document === text
|
133
|
+
return text.parse if RDoc::Comment === text
|
134
|
+
|
135
|
+
text = normalize_comment text # TODO remove, should not be necessary
|
136
|
+
|
137
|
+
return RDoc::Markup::Document.new if text =~ /\A\n*\z/
|
138
|
+
|
139
|
+
MARKUP_FORMAT[format].parse text
|
140
|
+
end
|
141
|
+
|
142
|
+
##
|
143
|
+
# The first +limit+ characters of +text+ as HTML
|
144
|
+
|
145
|
+
def snippet text, limit = 100
|
146
|
+
document = parse text
|
147
|
+
|
148
|
+
RDoc::Markup::ToHtmlSnippet.new(options, limit).convert document
|
149
|
+
end
|
150
|
+
|
151
|
+
##
|
152
|
+
# Strips leading # characters from +text+
|
153
|
+
|
154
|
+
def strip_hashes text
|
155
|
+
return text if text =~ /^(?>\s*)[^\#]/
|
156
|
+
|
157
|
+
empty = ''
|
158
|
+
empty = RDoc::Encoding.change_encoding empty, text.encoding
|
159
|
+
|
160
|
+
text.gsub(/^\s*(#+)/) { $1.tr '#', ' ' }.gsub(/^\s+$/, empty)
|
161
|
+
end
|
162
|
+
|
163
|
+
##
|
164
|
+
# Strips leading and trailing \n characters from +text+
|
165
|
+
|
166
|
+
def strip_newlines text
|
167
|
+
text.gsub(/\A\n*(.*?)\n*\z/m) do $1 end # block preserves String encoding
|
168
|
+
end
|
169
|
+
|
170
|
+
##
|
171
|
+
# Strips /* */ style comments
|
172
|
+
|
173
|
+
def strip_stars text
|
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)
|
190
|
+
end
|
191
|
+
|
192
|
+
##
|
193
|
+
# Converts ampersand, dashes, ellipsis, quotes, copyright and registered
|
194
|
+
# trademark symbols in +text+ to properly encoded characters.
|
195
|
+
|
196
|
+
def to_html text
|
197
|
+
html = (''.encode text.encoding).dup
|
198
|
+
|
199
|
+
encoded = RDoc::Text::TO_HTML_CHARACTERS[text.encoding]
|
200
|
+
|
201
|
+
s = StringScanner.new text
|
202
|
+
insquotes = false
|
203
|
+
indquotes = false
|
204
|
+
after_word = nil
|
205
|
+
|
206
|
+
until s.eos? do
|
207
|
+
case
|
208
|
+
when s.scan(/<(tt|code)>.*?<\/\1>/) then # skip contents of tt
|
209
|
+
html << s.matched.gsub('\\\\', '\\')
|
210
|
+
when s.scan(/<(tt|code)>.*?/) then
|
211
|
+
warn "mismatched <#{s[1]}> tag" # TODO signal file/line
|
212
|
+
html << s.matched
|
213
|
+
when s.scan(/<[^>]+\/?s*>/) then # skip HTML tags
|
214
|
+
html << s.matched
|
215
|
+
when s.scan(/\\(\S)/) then # unhandled suppressed crossref
|
216
|
+
html << s[1]
|
217
|
+
after_word = nil
|
218
|
+
when s.scan(/\.\.\.(\.?)/) then
|
219
|
+
html << s[1] << encoded[:ellipsis]
|
220
|
+
after_word = nil
|
221
|
+
when s.scan(/\(c\)/) then
|
222
|
+
html << encoded[:copyright]
|
223
|
+
after_word = nil
|
224
|
+
when s.scan(/\(r\)/) then
|
225
|
+
html << encoded[:trademark]
|
226
|
+
after_word = nil
|
227
|
+
when s.scan(/---/) then
|
228
|
+
html << encoded[:em_dash]
|
229
|
+
after_word = nil
|
230
|
+
when s.scan(/--/) then
|
231
|
+
html << encoded[:en_dash]
|
232
|
+
after_word = nil
|
233
|
+
when s.scan(/"|"/) then
|
234
|
+
html << encoded[indquotes ? :close_dquote : :open_dquote]
|
235
|
+
indquotes = !indquotes
|
236
|
+
after_word = nil
|
237
|
+
when s.scan(/``/) then # backtick double quote
|
238
|
+
html << encoded[:open_dquote]
|
239
|
+
after_word = nil
|
240
|
+
when s.scan(/''/) then # tick double quote
|
241
|
+
html << encoded[:close_dquote]
|
242
|
+
after_word = nil
|
243
|
+
when s.scan(/'/) then # single quote
|
244
|
+
if insquotes
|
245
|
+
html << encoded[:close_squote]
|
246
|
+
insquotes = false
|
247
|
+
elsif after_word
|
248
|
+
# Mary's dog, my parents' house: do not start paired quotes
|
249
|
+
html << encoded[:close_squote]
|
250
|
+
else
|
251
|
+
html << encoded[:open_squote]
|
252
|
+
insquotes = true
|
253
|
+
end
|
254
|
+
|
255
|
+
after_word = nil
|
256
|
+
else # advance to the next potentially significant character
|
257
|
+
match = s.scan(/.+?(?=[<\\.("'`&-])/) #"
|
258
|
+
|
259
|
+
if match then
|
260
|
+
html << match
|
261
|
+
after_word = match =~ /\w$/
|
262
|
+
else
|
263
|
+
html << s.rest
|
264
|
+
break
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
html
|
270
|
+
end
|
271
|
+
|
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
|
300
|
+
|
301
|
+
res.join.strip
|
302
|
+
end
|
303
|
+
|
304
|
+
end
|