rdoc 6.4.0 → 6.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.rdoc +1 -2
- data/LEGAL.rdoc +1 -1
- data/README.rdoc +2 -2
- data/TODO.rdoc +1 -1
- data/exe/rdoc +0 -1
- data/lib/rdoc/alias.rb +0 -1
- data/lib/rdoc/anon_class.rb +0 -1
- data/lib/rdoc/any_method.rb +17 -2
- data/lib/rdoc/attr.rb +0 -1
- data/lib/rdoc/class_module.rb +0 -1
- data/lib/rdoc/code_objects.rb +1 -2
- data/lib/rdoc/comment.rb +20 -41
- data/lib/rdoc/constant.rb +0 -1
- data/lib/rdoc/context/section.rb +2 -1
- data/lib/rdoc/context.rb +1 -3
- data/lib/rdoc/cross_reference.rb +17 -2
- data/lib/rdoc/encoding.rb +1 -6
- data/lib/rdoc/erb_partial.rb +0 -1
- data/lib/rdoc/erbio.rb +2 -7
- data/lib/rdoc/extend.rb +0 -1
- data/lib/rdoc/generator/darkfish.rb +2 -6
- data/lib/rdoc/generator/json_index.rb +2 -2
- data/lib/rdoc/generator/markup.rb +1 -2
- data/lib/rdoc/generator/ri.rb +0 -1
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +10 -10
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +27 -3
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +22 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +25 -4
- data/lib/rdoc/generator/template/darkfish/class.rhtml +28 -20
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +44 -7
- data/lib/rdoc/generator/template/darkfish/index.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +14 -1
- data/lib/rdoc/generator/template/darkfish/js/search.js +4 -4
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +7 -6
- data/lib/rdoc/generator/template/json_index/js/navigation.js +8 -8
- data/lib/rdoc/generator.rb +5 -5
- data/lib/rdoc/ghost_method.rb +0 -1
- data/lib/rdoc/i18n.rb +1 -1
- data/lib/rdoc/include.rb +0 -1
- data/lib/rdoc/known_classes.rb +5 -4
- data/lib/rdoc/markdown/entities.rb +0 -1
- data/lib/rdoc/markdown/literals.rb +98 -40
- data/lib/rdoc/markdown.kpeg +26 -19
- data/lib/rdoc/markdown.rb +326 -227
- data/lib/rdoc/markup/attr_changer.rb +0 -1
- data/lib/rdoc/markup/attr_span.rb +0 -1
- data/lib/rdoc/markup/attribute_manager.rb +29 -36
- data/lib/rdoc/markup/attributes.rb +0 -1
- data/lib/rdoc/markup/blank_line.rb +0 -1
- data/lib/rdoc/markup/block_quote.rb +0 -1
- data/lib/rdoc/markup/document.rb +0 -1
- data/lib/rdoc/markup/formatter.rb +0 -1
- data/lib/rdoc/markup/hard_break.rb +0 -1
- data/lib/rdoc/markup/heading.rb +0 -1
- data/lib/rdoc/markup/include.rb +0 -1
- data/lib/rdoc/markup/indented_paragraph.rb +0 -1
- data/lib/rdoc/markup/list.rb +0 -1
- data/lib/rdoc/markup/list_item.rb +0 -1
- data/lib/rdoc/markup/paragraph.rb +0 -1
- data/lib/rdoc/markup/parser.rb +12 -6
- data/lib/rdoc/markup/raw.rb +0 -1
- data/lib/rdoc/markup/regexp_handling.rb +0 -1
- data/lib/rdoc/markup/rule.rb +0 -1
- data/lib/rdoc/markup/to_ansi.rb +0 -1
- data/lib/rdoc/markup/to_html.rb +21 -16
- data/lib/rdoc/markup/to_html_crossref.rb +0 -1
- data/lib/rdoc/markup/to_html_snippet.rb +0 -1
- data/lib/rdoc/markup/to_joined_paragraph.rb +2 -3
- data/lib/rdoc/markup/to_label.rb +1 -2
- data/lib/rdoc/markup/to_markdown.rb +0 -1
- data/lib/rdoc/markup/to_rdoc.rb +3 -21
- data/lib/rdoc/markup/to_table_of_contents.rb +0 -1
- data/lib/rdoc/markup/to_test.rb +0 -1
- data/lib/rdoc/markup/to_tt_only.rb +0 -1
- data/lib/rdoc/markup/verbatim.rb +0 -1
- data/lib/rdoc/markup.rb +35 -667
- data/lib/rdoc/meta_method.rb +0 -1
- data/lib/rdoc/method_attr.rb +1 -2
- data/lib/rdoc/mixin.rb +0 -1
- data/lib/rdoc/normal_class.rb +1 -2
- data/lib/rdoc/normal_module.rb +1 -2
- data/lib/rdoc/options.rb +36 -20
- data/lib/rdoc/parser/c.rb +89 -101
- data/lib/rdoc/parser/changelog.rb +0 -1
- data/lib/rdoc/parser/markdown.rb +0 -2
- data/lib/rdoc/parser/rd.rb +0 -1
- data/lib/rdoc/parser/ripper_state_lex.rb +1 -1
- data/lib/rdoc/parser/ruby.rb +29 -14
- data/lib/rdoc/parser/ruby_tools.rb +0 -2
- data/lib/rdoc/parser/text.rb +0 -1
- data/lib/rdoc/parser.rb +19 -2
- data/lib/rdoc/rd/block_parser.rb +666 -12
- data/lib/rdoc/rd/block_parser.ry +13 -9
- data/lib/rdoc/rd/inline.rb +0 -1
- data/lib/rdoc/rd/inline_parser.rb +3 -1
- data/lib/rdoc/rd.rb +3 -4
- data/lib/rdoc/rdoc.rb +19 -7
- data/lib/rdoc/require.rb +0 -1
- data/lib/rdoc/ri/driver.rb +20 -86
- data/lib/rdoc/ri/store.rb +0 -1
- data/lib/rdoc/ri.rb +4 -5
- data/lib/rdoc/rubygems_hook.rb +1 -1
- data/lib/rdoc/servlet.rb +1 -1
- data/lib/rdoc/single_class.rb +5 -1
- data/lib/rdoc/stats/quiet.rb +0 -1
- data/lib/rdoc/stats/verbose.rb +0 -2
- data/lib/rdoc/stats.rb +3 -4
- data/lib/rdoc/store.rb +4 -4
- data/lib/rdoc/task.rb +31 -5
- data/lib/rdoc/token_stream.rb +0 -1
- data/lib/rdoc/top_level.rb +0 -1
- data/lib/rdoc/version.rb +3 -1
- data/lib/rdoc.rb +46 -46
- metadata +9 -11
- data/Gemfile +0 -12
- data/Rakefile +0 -107
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/rdoc.gemspec +0 -249
@@ -1,8 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
##
|
3
4
|
# Manages changes of attributes in a block of text
|
4
5
|
|
5
6
|
class RDoc::Markup::AttributeManager
|
7
|
+
unless ::MatchData.method_defined?(:match_length)
|
8
|
+
using ::Module.new {
|
9
|
+
refine(::MatchData) {
|
10
|
+
def match_length(nth) # :nodoc:
|
11
|
+
b, e = offset(nth)
|
12
|
+
e - b if b
|
13
|
+
end
|
14
|
+
}
|
15
|
+
}
|
16
|
+
end
|
6
17
|
|
7
18
|
##
|
8
19
|
# The NUL character
|
@@ -147,27 +158,23 @@ class RDoc::Markup::AttributeManager
|
|
147
158
|
def convert_attrs_matching_word_pairs(str, attrs, exclusive)
|
148
159
|
# first do matching ones
|
149
160
|
tags = @matching_word_pairs.select { |start, bitmap|
|
150
|
-
|
151
|
-
true
|
152
|
-
elsif !exclusive && !exclusive?(bitmap)
|
153
|
-
true
|
154
|
-
else
|
155
|
-
false
|
156
|
-
end
|
161
|
+
exclusive == exclusive?(bitmap)
|
157
162
|
}.keys
|
158
163
|
return if tags.empty?
|
159
|
-
|
164
|
+
tags = "[#{tags.join("")}](?!#{PROTECT_ATTR})"
|
165
|
+
all_tags = "[#{@matching_word_pairs.keys.join("")}](?!#{PROTECT_ATTR})"
|
160
166
|
|
161
|
-
re = /(
|
167
|
+
re = /(?:^|\W|#{all_tags})\K(#{tags})(\1*[#\\]?[\w:#{PROTECT_ATTR}.\/\[\]-]+?\S?)\1(?!\1)(?=#{all_tags}|\W|$)/
|
162
168
|
|
163
169
|
1 while str.gsub!(re) { |orig|
|
164
|
-
|
165
|
-
|
166
|
-
if
|
167
|
-
|
170
|
+
a, w = (m = $~).values_at(1, 2)
|
171
|
+
attr = @matching_word_pairs[a]
|
172
|
+
if attrs.set_attrs(m.begin(2), w.length, attr)
|
173
|
+
a = NULL * a.length
|
168
174
|
else
|
169
|
-
|
175
|
+
a = NON_PRINTING_START + a + NON_PRINTING_END
|
170
176
|
end
|
177
|
+
a + w + a
|
171
178
|
}
|
172
179
|
str.delete!(NON_PRINTING_START + NON_PRINTING_END)
|
173
180
|
end
|
@@ -176,15 +183,12 @@ class RDoc::Markup::AttributeManager
|
|
176
183
|
# then non-matching
|
177
184
|
unless @word_pair_map.empty? then
|
178
185
|
@word_pair_map.each do |regexp, attr|
|
179
|
-
|
180
|
-
next if exclusive?(attr)
|
181
|
-
else
|
182
|
-
next if !exclusive?(attr)
|
183
|
-
end
|
186
|
+
next unless exclusive == exclusive?(attr)
|
184
187
|
1 while str.gsub!(regexp) { |orig|
|
185
|
-
|
188
|
+
w = (m = ($~))[2]
|
189
|
+
updated = attrs.set_attrs(m.begin(2), w.length, attr)
|
186
190
|
if updated
|
187
|
-
NULL *
|
191
|
+
NULL * m.match_length(1) + w + NULL * m.match_length(3)
|
188
192
|
else
|
189
193
|
orig
|
190
194
|
end
|
@@ -198,20 +202,14 @@ class RDoc::Markup::AttributeManager
|
|
198
202
|
|
199
203
|
def convert_html(str, attrs, exclusive = false)
|
200
204
|
tags = @html_tags.select { |start, bitmap|
|
201
|
-
|
202
|
-
true
|
203
|
-
elsif !exclusive && !exclusive?(bitmap)
|
204
|
-
true
|
205
|
-
else
|
206
|
-
false
|
207
|
-
end
|
205
|
+
exclusive == exclusive?(bitmap)
|
208
206
|
}.keys.join '|'
|
209
207
|
|
210
208
|
1 while str.gsub!(/<(#{tags})>(.*?)<\/\1>/i) { |orig|
|
211
209
|
attr = @html_tags[$1.downcase]
|
212
|
-
html_length =
|
210
|
+
html_length = $~.match_length(1) + 2 # "<>".length
|
213
211
|
seq = NULL * html_length
|
214
|
-
attrs.set_attrs(
|
212
|
+
attrs.set_attrs($~.begin(2), $~.match_length(2), attr)
|
215
213
|
seq + $2 + seq + NULL
|
216
214
|
}
|
217
215
|
end
|
@@ -221,11 +219,7 @@ class RDoc::Markup::AttributeManager
|
|
221
219
|
|
222
220
|
def convert_regexp_handlings str, attrs, exclusive = false
|
223
221
|
@regexp_handlings.each do |regexp, attribute|
|
224
|
-
|
225
|
-
next if !exclusive?(attribute)
|
226
|
-
else
|
227
|
-
next if exclusive?(attribute)
|
228
|
-
end
|
222
|
+
next unless exclusive == exclusive?(attribute)
|
229
223
|
str.scan(regexp) do
|
230
224
|
capture = $~.size == 1 ? 0 : 1
|
231
225
|
|
@@ -406,4 +400,3 @@ class RDoc::Markup::AttributeManager
|
|
406
400
|
end
|
407
401
|
|
408
402
|
end
|
409
|
-
|
data/lib/rdoc/markup/document.rb
CHANGED
data/lib/rdoc/markup/heading.rb
CHANGED
data/lib/rdoc/markup/include.rb
CHANGED
data/lib/rdoc/markup/list.rb
CHANGED
data/lib/rdoc/markup/parser.rb
CHANGED
@@ -287,6 +287,12 @@ class RDoc::Markup::Parser
|
|
287
287
|
line << ' ' * indent
|
288
288
|
when :BREAK, :TEXT then
|
289
289
|
line << data
|
290
|
+
when :BLOCKQUOTE then
|
291
|
+
line << '>>>'
|
292
|
+
peek_type, _, peek_column = peek_token
|
293
|
+
if peek_type != :NEWLINE and peek_column
|
294
|
+
line << ' ' * (peek_column - column - 3)
|
295
|
+
end
|
290
296
|
else # *LIST_TOKENS
|
291
297
|
list_marker = case type
|
292
298
|
when :BULLET then data
|
@@ -372,11 +378,8 @@ class RDoc::Markup::Parser
|
|
372
378
|
unget
|
373
379
|
parse_text parent, indent
|
374
380
|
when :BLOCKQUOTE then
|
375
|
-
type,
|
376
|
-
|
377
|
-
type, _, column = get
|
378
|
-
end
|
379
|
-
unget if type
|
381
|
+
nil while (type, = get; type) and type != :NEWLINE
|
382
|
+
_, _, column, = peek_token
|
380
383
|
bq = RDoc::Markup::BlockQuote.new
|
381
384
|
p :blockquote_start => [data, column] if @debug
|
382
385
|
parse bq, column
|
@@ -544,7 +547,10 @@ class RDoc::Markup::Parser
|
|
544
547
|
[:NOTE, @s[1], *pos]
|
545
548
|
# >>> followed by end of line => :BLOCKQUOTE
|
546
549
|
when @s.scan(/>>> *(\w+)?$/) then
|
547
|
-
|
550
|
+
if word = @s[1]
|
551
|
+
@s.unscan(word)
|
552
|
+
end
|
553
|
+
[:BLOCKQUOTE, word, *pos]
|
548
554
|
# anything else: :TEXT
|
549
555
|
else
|
550
556
|
@s.scan(/(.*?)( )?\r?$/)
|
data/lib/rdoc/markup/raw.rb
CHANGED
data/lib/rdoc/markup/rule.rb
CHANGED
data/lib/rdoc/markup/to_ansi.rb
CHANGED
data/lib/rdoc/markup/to_html.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'cgi'
|
2
|
+
require 'cgi/util'
|
3
3
|
|
4
4
|
##
|
5
5
|
# Outputs RDoc markup as HTML.
|
@@ -61,12 +61,14 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
61
61
|
#
|
62
62
|
# These methods are used by regexp handling markup added by RDoc::Markup#add_regexp_handling.
|
63
63
|
|
64
|
+
URL_CHARACTERS_REGEXP_STR = /[A-Za-z0-9\-._~:\/\?#\[\]@!$&'\(\)*+,;%=]/.source
|
65
|
+
|
64
66
|
##
|
65
67
|
# Adds regexp handlings.
|
66
68
|
|
67
69
|
def init_regexp_handlings
|
68
70
|
# external links
|
69
|
-
@markup.add_regexp_handling(/(?:link:|https?:|mailto:|ftp:|irc:|www\.)
|
71
|
+
@markup.add_regexp_handling(/(?:link:|https?:|mailto:|ftp:|irc:|www\.)#{URL_CHARACTERS_REGEXP_STR}+\w/,
|
70
72
|
:HYPERLINK)
|
71
73
|
init_link_notation_regexp_handlings
|
72
74
|
end
|
@@ -82,7 +84,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
82
84
|
def handle_RDOCLINK url # :nodoc:
|
83
85
|
case url
|
84
86
|
when /^rdoc-ref:/
|
85
|
-
$'
|
87
|
+
CGI.escapeHTML($')
|
86
88
|
when /^rdoc-label:/
|
87
89
|
text = $'
|
88
90
|
|
@@ -93,13 +95,11 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
93
95
|
else text
|
94
96
|
end
|
95
97
|
|
96
|
-
gen_url url, text
|
98
|
+
gen_url CGI.escapeHTML(url), CGI.escapeHTML(text)
|
97
99
|
when /^rdoc-image:/
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
$'
|
100
|
+
%[<img src=\"#{CGI.escapeHTML($')}\">]
|
101
|
+
when /\Ardoc-[a-z]+:/
|
102
|
+
CGI.escapeHTML($')
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
@@ -123,7 +123,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
123
123
|
# Reference to a local file relative to the output directory.
|
124
124
|
|
125
125
|
def handle_regexp_HYPERLINK(target)
|
126
|
-
url = target.text
|
126
|
+
url = CGI.escapeHTML(target.text)
|
127
127
|
|
128
128
|
gen_url url, url
|
129
129
|
end
|
@@ -152,9 +152,13 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
152
152
|
text =~ /^\{(.*)\}\[(.*?)\]$/ or text =~ /^(\S+)\[(.*?)\]$/
|
153
153
|
|
154
154
|
label = $1
|
155
|
-
url = $2
|
155
|
+
url = CGI.escapeHTML($2)
|
156
156
|
|
157
|
-
|
157
|
+
if /^rdoc-image:/ =~ label
|
158
|
+
label = handle_RDOCLINK(label)
|
159
|
+
else
|
160
|
+
label = CGI.escapeHTML(label)
|
161
|
+
end
|
158
162
|
|
159
163
|
gen_url url, label
|
160
164
|
end
|
@@ -322,7 +326,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
322
326
|
header.zip(aligns) do |text, align|
|
323
327
|
@res << '<th'
|
324
328
|
@res << ' align="' << align << '"' if align
|
325
|
-
@res << '>' <<
|
329
|
+
@res << '>' << to_html(text) << "</th>\n"
|
326
330
|
end
|
327
331
|
@res << "</tr>\n</thead>\n<tbody>\n"
|
328
332
|
body.each do |row|
|
@@ -330,7 +334,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
330
334
|
row.zip(aligns) do |text, align|
|
331
335
|
@res << '<td'
|
332
336
|
@res << ' align="' << align << '"' if align
|
333
|
-
@res << '>' <<
|
337
|
+
@res << '>' << to_html(text) << "</td>\n"
|
334
338
|
end
|
335
339
|
@res << "</tr>\n"
|
336
340
|
end
|
@@ -426,7 +430,9 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
426
430
|
|
427
431
|
def parseable? text
|
428
432
|
verbose, $VERBOSE = $VERBOSE, nil
|
429
|
-
|
433
|
+
catch(:valid) do
|
434
|
+
eval("BEGIN { throw :valid, true }\n#{text}")
|
435
|
+
end
|
430
436
|
rescue SyntaxError
|
431
437
|
false
|
432
438
|
ensure
|
@@ -441,4 +447,3 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
441
447
|
end
|
442
448
|
|
443
449
|
end
|
444
|
-
|
@@ -25,9 +25,9 @@ class RDoc::Markup::ToJoinedParagraph < RDoc::Markup::Formatter
|
|
25
25
|
def accept_paragraph paragraph
|
26
26
|
parts = paragraph.parts.chunk do |part|
|
27
27
|
String === part
|
28
|
-
end.
|
28
|
+
end.flat_map do |string, chunk|
|
29
29
|
string ? chunk.join.rstrip : chunk
|
30
|
-
end
|
30
|
+
end
|
31
31
|
|
32
32
|
paragraph.parts.replace parts
|
33
33
|
end
|
@@ -44,4 +44,3 @@ class RDoc::Markup::ToJoinedParagraph < RDoc::Markup::Formatter
|
|
44
44
|
alias accept_table ignore
|
45
45
|
|
46
46
|
end
|
47
|
-
|
data/lib/rdoc/markup/to_label.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'cgi'
|
2
|
+
require 'cgi/util'
|
3
3
|
|
4
4
|
##
|
5
5
|
# Creates HTML-safe labels suitable for use in id attributes. Tidylinks are
|
@@ -72,4 +72,3 @@ class RDoc::Markup::ToLabel < RDoc::Markup::Formatter
|
|
72
72
|
alias start_accepting ignore
|
73
73
|
|
74
74
|
end
|
75
|
-
|
data/lib/rdoc/markup/to_rdoc.rb
CHANGED
@@ -330,33 +330,15 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
330
330
|
|
331
331
|
text_len = 20 if text_len < 20
|
332
332
|
|
333
|
-
re = /^(.{0,#{text_len}})[ \n]/
|
334
333
|
next_prefix = ' ' * @indent
|
335
334
|
|
336
335
|
prefix = @prefix || next_prefix
|
337
336
|
@prefix = nil
|
338
337
|
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
if text =~ re then
|
343
|
-
@res << $1
|
344
|
-
text.slice!(0, $&.length)
|
345
|
-
else
|
346
|
-
@res << text.slice!(0, text_len)
|
347
|
-
end
|
348
|
-
|
349
|
-
@res << "\n" << next_prefix
|
350
|
-
end
|
351
|
-
|
352
|
-
if text.empty? then
|
353
|
-
@res.pop
|
354
|
-
@res.pop
|
355
|
-
else
|
356
|
-
@res << text
|
357
|
-
@res << "\n"
|
338
|
+
text.scan(/\G(?:([^ \n]{#{text_len}})(?=[^ \n])|(.{1,#{text_len}})(?:[ \n]|\z))/) do
|
339
|
+
@res << prefix << ($1 || $2) << "\n"
|
340
|
+
prefix = next_prefix
|
358
341
|
end
|
359
342
|
end
|
360
343
|
|
361
344
|
end
|
362
|
-
|
data/lib/rdoc/markup/to_test.rb
CHANGED
data/lib/rdoc/markup/verbatim.rb
CHANGED