rdoc 6.4.0 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CONTRIBUTING.rdoc +1 -2
- data/LEGAL.rdoc +1 -1
- data/exe/rdoc +0 -1
- data/lib/rdoc/any_method.rb +2 -2
- data/lib/rdoc/code_objects.rb +1 -2
- data/lib/rdoc/context/section.rb +2 -0
- data/lib/rdoc/context.rb +1 -3
- data/lib/rdoc/cross_reference.rb +17 -1
- data/lib/rdoc/generator/markup.rb +1 -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_table_of_contents.rhtml +25 -4
- data/lib/rdoc/generator/template/darkfish/class.rhtml +22 -20
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +24 -1
- data/lib/rdoc/generator/template/darkfish/index.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +1 -1
- data/lib/rdoc/generator/template/darkfish/js/search.js +1 -1
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +2 -2
- data/lib/rdoc/generator.rb +5 -5
- data/lib/rdoc/i18n.rb +1 -1
- data/lib/rdoc/known_classes.rb +5 -4
- data/lib/rdoc/markdown/literals.rb +24 -8
- data/lib/rdoc/markdown.kpeg +25 -18
- data/lib/rdoc/markdown.rb +323 -226
- data/lib/rdoc/markup/attribute_manager.rb +29 -35
- data/lib/rdoc/markup/parser.rb +12 -6
- data/lib/rdoc/markup/to_html.rb +18 -14
- data/lib/rdoc/markup/to_label.rb +1 -1
- data/lib/rdoc/markup/to_rdoc.rb +3 -20
- data/lib/rdoc/markup.rb +35 -667
- data/lib/rdoc/method_attr.rb +1 -1
- data/lib/rdoc/normal_class.rb +1 -1
- data/lib/rdoc/normal_module.rb +1 -1
- data/lib/rdoc/options.rb +33 -18
- data/lib/rdoc/parser/c.rb +89 -101
- data/lib/rdoc/parser/ruby.rb +25 -10
- data/lib/rdoc/parser.rb +19 -2
- data/lib/rdoc/rd/block_parser.rb +13 -9
- data/lib/rdoc/rd/block_parser.ry +12 -8
- data/lib/rdoc/rd/inline_parser.rb +1 -1
- data/lib/rdoc/rd.rb +3 -4
- data/lib/rdoc/rdoc.rb +17 -3
- data/lib/rdoc/ri/driver.rb +11 -78
- 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 -0
- data/lib/rdoc/stats.rb +3 -4
- data/lib/rdoc/store.rb +4 -4
- data/lib/rdoc/task.rb +3 -3
- data/lib/rdoc/version.rb +3 -1
- data/lib/rdoc.rb +46 -46
- metadata +4 -9
- data/Gemfile +0 -12
- data/Rakefile +0 -107
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/rdoc.gemspec +0 -249
@@ -2,6 +2,17 @@
|
|
2
2
|
##
|
3
3
|
# Manages changes of attributes in a block of text
|
4
4
|
|
5
|
+
unless MatchData.method_defined?(:match_length)
|
6
|
+
using Module.new {
|
7
|
+
refine(MatchData) {
|
8
|
+
def match_length(nth)
|
9
|
+
b, e = offset(nth)
|
10
|
+
e - b if b
|
11
|
+
end
|
12
|
+
}
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
5
16
|
class RDoc::Markup::AttributeManager
|
6
17
|
|
7
18
|
##
|
@@ -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
|
|
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/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
|
data/lib/rdoc/markup/to_label.rb
CHANGED
data/lib/rdoc/markup/to_rdoc.rb
CHANGED
@@ -330,31 +330,14 @@ 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
|
|