rdoc 5.0.0 → 6.3.1
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 +5 -5
- data/CONTRIBUTING.rdoc +4 -4
- data/Gemfile +9 -0
- data/History.rdoc +12 -2
- data/README.rdoc +5 -6
- data/Rakefile +35 -65
- data/lib/rdoc/alias.rb +1 -1
- data/lib/rdoc/anon_class.rb +1 -1
- data/lib/rdoc/any_method.rb +59 -15
- data/lib/rdoc/attr.rb +1 -1
- data/lib/rdoc/class_module.rb +5 -3
- data/lib/rdoc/code_object.rb +2 -9
- data/lib/rdoc/code_objects.rb +1 -1
- data/lib/rdoc/comment.rb +32 -11
- data/lib/rdoc/constant.rb +3 -3
- data/lib/rdoc/context/section.rb +1 -14
- data/lib/rdoc/context.rb +74 -21
- data/lib/rdoc/cross_reference.rb +33 -15
- data/lib/rdoc/encoding.rb +58 -30
- data/lib/rdoc/erb_partial.rb +2 -2
- data/lib/rdoc/erbio.rb +8 -4
- data/lib/rdoc/extend.rb +1 -1
- data/lib/rdoc/generator/darkfish.rb +60 -29
- data/lib/rdoc/generator/json_index.rb +7 -4
- data/lib/rdoc/generator/markup.rb +3 -13
- data/lib/rdoc/generator/pot/message_extractor.rb +1 -1
- data/lib/rdoc/generator/pot/po.rb +3 -3
- data/lib/rdoc/generator/pot/po_entry.rb +11 -11
- data/lib/rdoc/generator/pot.rb +4 -4
- data/lib/rdoc/generator/ri.rb +1 -1
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +9 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/class.rhtml +45 -47
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +55 -6
- data/lib/rdoc/generator/template/darkfish/index.rhtml +3 -4
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +22 -99
- data/lib/rdoc/generator/template/darkfish/js/search.js +32 -31
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +15 -16
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +16 -16
- data/lib/rdoc/generator/template/json_index/js/navigation.js +4 -41
- data/lib/rdoc/generator/template/json_index/js/searcher.js +6 -6
- data/lib/rdoc/generator.rb +1 -1
- data/lib/rdoc/ghost_method.rb +1 -1
- data/lib/rdoc/i18n/locale.rb +2 -2
- data/lib/rdoc/i18n/text.rb +5 -5
- data/lib/rdoc/i18n.rb +3 -3
- data/lib/rdoc/include.rb +1 -1
- data/lib/rdoc/known_classes.rb +1 -1
- data/lib/rdoc/markdown/entities.rb +1 -1
- data/lib/rdoc/markdown/literals.kpeg +1 -0
- data/lib/rdoc/markdown/literals.rb +19 -7
- data/lib/rdoc/markdown.kpeg +92 -44
- data/lib/rdoc/markdown.rb +1171 -610
- data/lib/rdoc/markup/attr_changer.rb +1 -1
- data/lib/rdoc/markup/attr_span.rb +9 -3
- data/lib/rdoc/markup/attribute_manager.rb +115 -50
- data/lib/rdoc/markup/attributes.rb +7 -7
- data/lib/rdoc/markup/blank_line.rb +1 -1
- data/lib/rdoc/markup/block_quote.rb +1 -1
- data/lib/rdoc/markup/document.rb +1 -1
- data/lib/rdoc/markup/formatter.rb +25 -24
- data/lib/rdoc/markup/hard_break.rb +1 -1
- data/lib/rdoc/markup/heading.rb +4 -4
- data/lib/rdoc/markup/include.rb +1 -1
- data/lib/rdoc/markup/indented_paragraph.rb +1 -1
- data/lib/rdoc/markup/list.rb +1 -1
- data/lib/rdoc/markup/list_item.rb +1 -1
- data/lib/rdoc/markup/paragraph.rb +1 -1
- data/lib/rdoc/markup/parser.rb +79 -47
- data/lib/rdoc/markup/pre_process.rb +11 -6
- data/lib/rdoc/markup/raw.rb +1 -1
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/rule.rb +1 -1
- data/lib/rdoc/markup/to_ansi.rb +1 -1
- data/lib/rdoc/markup/to_bs.rb +4 -4
- data/lib/rdoc/markup/to_html.rb +71 -26
- data/lib/rdoc/markup/to_html_crossref.rb +41 -26
- data/lib/rdoc/markup/to_html_snippet.rb +10 -10
- data/lib/rdoc/markup/to_joined_paragraph.rb +7 -32
- data/lib/rdoc/markup/to_label.rb +10 -10
- data/lib/rdoc/markup/to_markdown.rb +9 -9
- data/lib/rdoc/markup/to_rdoc.rb +35 -7
- data/lib/rdoc/markup/to_table_of_contents.rb +2 -1
- data/lib/rdoc/markup/to_test.rb +1 -1
- data/lib/rdoc/markup/to_tt_only.rb +3 -3
- data/lib/rdoc/markup/verbatim.rb +1 -1
- data/lib/rdoc/markup.rb +14 -17
- data/lib/rdoc/meta_method.rb +1 -1
- data/lib/rdoc/method_attr.rb +2 -2
- data/lib/rdoc/mixin.rb +1 -1
- data/lib/rdoc/normal_class.rb +3 -3
- data/lib/rdoc/normal_module.rb +1 -1
- data/lib/rdoc/options.rb +79 -21
- data/lib/rdoc/parser/c.rb +147 -194
- data/lib/rdoc/parser/changelog.rb +150 -19
- data/lib/rdoc/parser/markdown.rb +1 -1
- data/lib/rdoc/parser/rd.rb +1 -1
- data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
- data/lib/rdoc/parser/ruby.rb +634 -465
- data/lib/rdoc/parser/ruby_tools.rb +33 -34
- data/lib/rdoc/parser/simple.rb +3 -3
- data/lib/rdoc/parser/text.rb +1 -1
- data/lib/rdoc/parser.rb +12 -35
- data/lib/rdoc/rd/block_parser.rb +109 -108
- data/lib/rdoc/rd/block_parser.ry +3 -3
- data/lib/rdoc/rd/inline.rb +5 -5
- data/lib/rdoc/rd/inline_parser.rb +186 -185
- data/lib/rdoc/rd/inline_parser.ry +1 -1
- data/lib/rdoc/rd.rb +1 -1
- data/lib/rdoc/rdoc.rb +54 -41
- data/lib/rdoc/require.rb +1 -1
- data/lib/rdoc/ri/driver.rb +132 -42
- data/lib/rdoc/ri/formatter.rb +1 -1
- data/lib/rdoc/ri/paths.rb +4 -18
- data/lib/rdoc/ri/store.rb +1 -1
- data/lib/rdoc/ri/task.rb +2 -2
- data/lib/rdoc/ri.rb +1 -1
- data/lib/rdoc/rubygems_hook.rb +3 -3
- data/lib/rdoc/servlet.rb +21 -12
- data/lib/rdoc/single_class.rb +1 -1
- data/lib/rdoc/stats/normal.rb +24 -18
- data/lib/rdoc/stats/quiet.rb +1 -1
- data/lib/rdoc/stats/verbose.rb +1 -1
- data/lib/rdoc/stats.rb +1 -1
- data/lib/rdoc/store.rb +38 -27
- data/lib/rdoc/task.rb +2 -2
- data/lib/rdoc/text.rb +16 -21
- data/lib/rdoc/token_stream.rb +56 -33
- data/lib/rdoc/tom_doc.rb +17 -12
- data/lib/rdoc/top_level.rb +9 -3
- data/lib/rdoc/version.rb +8 -0
- data/lib/rdoc.rb +24 -10
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +206 -15
- metadata +15 -64
- data/.document +0 -5
- data/.gitignore +0 -13
- data/.travis.yml +0 -23
- data/lib/gauntlet_rdoc.rb +0 -82
- data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
- data/lib/rdoc/markup/formatter_test_case.rb +0 -764
- data/lib/rdoc/markup/inline.rb +0 -2
- data/lib/rdoc/markup/special.rb +0 -41
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
- data/lib/rdoc/ruby_lex.rb +0 -1367
- data/lib/rdoc/ruby_token.rb +0 -461
- data/lib/rdoc/test_case.rb +0 -204
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
##
|
3
3
|
# An array of attributes which parallels the characters in a string.
|
4
4
|
|
@@ -7,16 +7,22 @@ class RDoc::Markup::AttrSpan
|
|
7
7
|
##
|
8
8
|
# Creates a new AttrSpan for +length+ characters
|
9
9
|
|
10
|
-
def initialize(length)
|
10
|
+
def initialize(length, exclusive)
|
11
11
|
@attrs = Array.new(length, 0)
|
12
|
+
@exclusive = exclusive
|
12
13
|
end
|
13
14
|
|
14
15
|
##
|
15
16
|
# Toggles +bits+ from +start+ to +length+
|
16
17
|
def set_attrs(start, length, bits)
|
18
|
+
updated = false
|
17
19
|
for i in start ... (start+length)
|
18
|
-
@attrs[i]
|
20
|
+
if (@exclusive & @attrs[i]) == 0 || (@exclusive & bits) != 0
|
21
|
+
@attrs[i] |= bits
|
22
|
+
updated = true
|
23
|
+
end
|
19
24
|
end
|
25
|
+
updated
|
20
26
|
end
|
21
27
|
|
22
28
|
##
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
##
|
3
3
|
# Manages changes of attributes in a block of text
|
4
4
|
|
@@ -53,10 +53,14 @@ class RDoc::Markup::AttributeManager
|
|
53
53
|
attr_reader :protectable
|
54
54
|
|
55
55
|
##
|
56
|
-
# And this maps
|
57
|
-
# something like a WikiWord
|
56
|
+
# And this maps _regexp handling_ sequences to a name. A regexp handling
|
57
|
+
# sequence is something like a WikiWord
|
58
58
|
|
59
|
-
attr_reader :
|
59
|
+
attr_reader :regexp_handlings
|
60
|
+
|
61
|
+
##
|
62
|
+
# A bits of exclusive maps
|
63
|
+
attr_reader :exclusive_bitmap
|
60
64
|
|
61
65
|
##
|
62
66
|
# Creates a new attribute manager that understands bold, emphasized and
|
@@ -66,19 +70,20 @@ class RDoc::Markup::AttributeManager
|
|
66
70
|
@html_tags = {}
|
67
71
|
@matching_word_pairs = {}
|
68
72
|
@protectable = %w[<]
|
69
|
-
@
|
73
|
+
@regexp_handlings = []
|
70
74
|
@word_pair_map = {}
|
75
|
+
@exclusive_bitmap = 0
|
71
76
|
@attributes = RDoc::Markup::Attributes.new
|
72
77
|
|
73
|
-
add_word_pair "*", "*", :BOLD
|
74
|
-
add_word_pair "_", "_", :EM
|
75
|
-
add_word_pair "+", "+", :TT
|
78
|
+
add_word_pair "*", "*", :BOLD, true
|
79
|
+
add_word_pair "_", "_", :EM, true
|
80
|
+
add_word_pair "+", "+", :TT, true
|
76
81
|
|
77
|
-
add_html "em", :EM
|
78
|
-
add_html "i", :EM
|
79
|
-
add_html "b", :BOLD
|
80
|
-
add_html "tt", :TT
|
81
|
-
add_html "code", :TT
|
82
|
+
add_html "em", :EM, true
|
83
|
+
add_html "i", :EM, true
|
84
|
+
add_html "b", :BOLD, true
|
85
|
+
add_html "tt", :TT, true
|
86
|
+
add_html "code", :TT, true
|
82
87
|
end
|
83
88
|
|
84
89
|
##
|
@@ -122,29 +127,67 @@ class RDoc::Markup::AttributeManager
|
|
122
127
|
res
|
123
128
|
end
|
124
129
|
|
130
|
+
def exclusive?(attr)
|
131
|
+
(attr & @exclusive_bitmap) != 0
|
132
|
+
end
|
133
|
+
|
134
|
+
NON_PRINTING_START = "\1" # :nodoc:
|
135
|
+
NON_PRINTING_END = "\2" # :nodoc:
|
136
|
+
|
125
137
|
##
|
126
138
|
# Map attributes like <b>text</b>to the sequence
|
127
139
|
# \001\002<char>\001\003<char>, where <char> is a per-attribute specific
|
128
140
|
# character
|
129
141
|
|
130
|
-
def convert_attrs(str, attrs)
|
142
|
+
def convert_attrs(str, attrs, exclusive = false)
|
143
|
+
convert_attrs_matching_word_pairs(str, attrs, exclusive)
|
144
|
+
convert_attrs_word_pair_map(str, attrs, exclusive)
|
145
|
+
end
|
146
|
+
|
147
|
+
def convert_attrs_matching_word_pairs(str, attrs, exclusive)
|
131
148
|
# first do matching ones
|
132
|
-
tags = @matching_word_pairs.
|
149
|
+
tags = @matching_word_pairs.select { |start, bitmap|
|
150
|
+
if exclusive && exclusive?(bitmap)
|
151
|
+
true
|
152
|
+
elsif !exclusive && !exclusive?(bitmap)
|
153
|
+
true
|
154
|
+
else
|
155
|
+
false
|
156
|
+
end
|
157
|
+
}.keys
|
158
|
+
return if tags.empty?
|
159
|
+
all_tags = @matching_word_pairs.keys
|
133
160
|
|
134
|
-
re = /(^|\W)([#{tags}])([#\\]?[\w
|
161
|
+
re = /(^|\W|[#{all_tags.join("")}])([#{tags.join("")}])(\2*[#\\]?[\w:.\/\[\]-]+?\S?)\2(?!\2)([#{all_tags.join("")}]|\W|$)/
|
135
162
|
|
136
|
-
1 while str.gsub!(re)
|
163
|
+
1 while str.gsub!(re) { |orig|
|
137
164
|
attr = @matching_word_pairs[$2]
|
138
|
-
attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr)
|
139
|
-
|
140
|
-
|
165
|
+
attr_updated = attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr)
|
166
|
+
if attr_updated
|
167
|
+
$1 + NULL * $2.length + $3 + NULL * $2.length + $4
|
168
|
+
else
|
169
|
+
$1 + NON_PRINTING_START + $2 + NON_PRINTING_END + $3 + NON_PRINTING_START + $2 + NON_PRINTING_END + $4
|
170
|
+
end
|
171
|
+
}
|
172
|
+
str.delete!(NON_PRINTING_START + NON_PRINTING_END)
|
173
|
+
end
|
141
174
|
|
175
|
+
def convert_attrs_word_pair_map(str, attrs, exclusive)
|
142
176
|
# then non-matching
|
143
177
|
unless @word_pair_map.empty? then
|
144
178
|
@word_pair_map.each do |regexp, attr|
|
145
|
-
|
146
|
-
|
147
|
-
|
179
|
+
if !exclusive
|
180
|
+
next if exclusive?(attr)
|
181
|
+
else
|
182
|
+
next if !exclusive?(attr)
|
183
|
+
end
|
184
|
+
1 while str.gsub!(regexp) { |orig|
|
185
|
+
updated = attrs.set_attrs($`.length + $1.length, $2.length, attr)
|
186
|
+
if updated
|
187
|
+
NULL * $1.length + $2 + NULL * $3.length
|
188
|
+
else
|
189
|
+
orig
|
190
|
+
end
|
148
191
|
}
|
149
192
|
end
|
150
193
|
end
|
@@ -153,10 +196,18 @@ class RDoc::Markup::AttributeManager
|
|
153
196
|
##
|
154
197
|
# Converts HTML tags to RDoc attributes
|
155
198
|
|
156
|
-
def convert_html(str, attrs)
|
157
|
-
tags = @html_tags.
|
199
|
+
def convert_html(str, attrs, exclusive = false)
|
200
|
+
tags = @html_tags.select { |start, bitmap|
|
201
|
+
if exclusive && exclusive?(bitmap)
|
202
|
+
true
|
203
|
+
elsif !exclusive && !exclusive?(bitmap)
|
204
|
+
true
|
205
|
+
else
|
206
|
+
false
|
207
|
+
end
|
208
|
+
}.keys.join '|'
|
158
209
|
|
159
|
-
1 while str.gsub!(/<(#{tags})>(.*?)<\/\1>/i) {
|
210
|
+
1 while str.gsub!(/<(#{tags})>(.*?)<\/\1>/i) { |orig|
|
160
211
|
attr = @html_tags[$1.downcase]
|
161
212
|
html_length = $1.length + 2
|
162
213
|
seq = NULL * html_length
|
@@ -166,22 +217,27 @@ class RDoc::Markup::AttributeManager
|
|
166
217
|
end
|
167
218
|
|
168
219
|
##
|
169
|
-
# Converts
|
170
|
-
|
171
|
-
def
|
172
|
-
@
|
220
|
+
# Converts regexp handling sequences to RDoc attributes
|
221
|
+
|
222
|
+
def convert_regexp_handlings str, attrs, exclusive = false
|
223
|
+
@regexp_handlings.each do |regexp, attribute|
|
224
|
+
if exclusive
|
225
|
+
next if !exclusive?(attribute)
|
226
|
+
else
|
227
|
+
next if exclusive?(attribute)
|
228
|
+
end
|
173
229
|
str.scan(regexp) do
|
174
230
|
capture = $~.size == 1 ? 0 : 1
|
175
231
|
|
176
232
|
s, e = $~.offset capture
|
177
233
|
|
178
|
-
attrs.set_attrs s, e - s, attribute | @attributes.
|
234
|
+
attrs.set_attrs s, e - s, attribute | @attributes.regexp_handling
|
179
235
|
end
|
180
236
|
end
|
181
237
|
end
|
182
238
|
|
183
239
|
##
|
184
|
-
# Escapes
|
240
|
+
# Escapes regexp handling sequences of text to prevent conversion to RDoc
|
185
241
|
|
186
242
|
def mask_protected_sequences
|
187
243
|
# protect __send__, __FILE__, etc.
|
@@ -193,7 +249,7 @@ class RDoc::Markup::AttributeManager
|
|
193
249
|
end
|
194
250
|
|
195
251
|
##
|
196
|
-
# Unescapes
|
252
|
+
# Unescapes regexp handling sequences of text
|
197
253
|
|
198
254
|
def unmask_protected_sequences
|
199
255
|
@str.gsub!(/(.)#{PROTECT_ATTR}/, "\\1\000")
|
@@ -205,7 +261,7 @@ class RDoc::Markup::AttributeManager
|
|
205
261
|
#
|
206
262
|
# am.add_word_pair '*', '*', :BOLD
|
207
263
|
|
208
|
-
def add_word_pair(start, stop, name)
|
264
|
+
def add_word_pair(start, stop, name, exclusive = false)
|
209
265
|
raise ArgumentError, "Word flags may not start with '<'" if
|
210
266
|
start[0,1] == '<'
|
211
267
|
|
@@ -220,6 +276,8 @@ class RDoc::Markup::AttributeManager
|
|
220
276
|
|
221
277
|
@protectable << start[0,1]
|
222
278
|
@protectable.uniq!
|
279
|
+
|
280
|
+
@exclusive_bitmap |= bitmap if exclusive
|
223
281
|
end
|
224
282
|
|
225
283
|
##
|
@@ -228,33 +286,40 @@ class RDoc::Markup::AttributeManager
|
|
228
286
|
#
|
229
287
|
# am.add_html 'em', :EM
|
230
288
|
|
231
|
-
def add_html(tag, name)
|
232
|
-
|
289
|
+
def add_html(tag, name, exclusive = false)
|
290
|
+
bitmap = @attributes.bitmap_for name
|
291
|
+
@html_tags[tag.downcase] = bitmap
|
292
|
+
@exclusive_bitmap |= bitmap if exclusive
|
233
293
|
end
|
234
294
|
|
235
295
|
##
|
236
|
-
# Adds a
|
296
|
+
# Adds a regexp handling for +pattern+ with +name+. A simple URL handler
|
237
297
|
# would be:
|
238
298
|
#
|
239
|
-
# @am.
|
299
|
+
# @am.add_regexp_handling(/((https?:)\S+\w)/, :HYPERLINK)
|
240
300
|
|
241
|
-
def
|
242
|
-
|
301
|
+
def add_regexp_handling pattern, name, exclusive = false
|
302
|
+
bitmap = @attributes.bitmap_for(name)
|
303
|
+
@regexp_handlings << [pattern, bitmap]
|
304
|
+
@exclusive_bitmap |= bitmap if exclusive
|
243
305
|
end
|
244
306
|
|
245
307
|
##
|
246
|
-
# Processes +str+ converting attributes, HTML and
|
308
|
+
# Processes +str+ converting attributes, HTML and regexp handlings
|
247
309
|
|
248
310
|
def flow str
|
249
|
-
@str = str
|
311
|
+
@str = str.dup
|
250
312
|
|
251
313
|
mask_protected_sequences
|
252
314
|
|
253
|
-
@attrs = RDoc::Markup::AttrSpan.new @str.length
|
315
|
+
@attrs = RDoc::Markup::AttrSpan.new @str.length, @exclusive_bitmap
|
254
316
|
|
255
|
-
convert_attrs
|
256
|
-
convert_html
|
257
|
-
|
317
|
+
convert_attrs @str, @attrs, true
|
318
|
+
convert_html @str, @attrs, true
|
319
|
+
convert_regexp_handlings @str, @attrs, true
|
320
|
+
convert_attrs @str, @attrs
|
321
|
+
convert_html @str, @attrs
|
322
|
+
convert_regexp_handlings @str, @attrs
|
258
323
|
|
259
324
|
unmask_protected_sequences
|
260
325
|
|
@@ -312,12 +377,12 @@ class RDoc::Markup::AttributeManager
|
|
312
377
|
res << change_attribute(current_attr, new_attr)
|
313
378
|
current_attr = new_attr
|
314
379
|
|
315
|
-
if (current_attr & @attributes.
|
380
|
+
if (current_attr & @attributes.regexp_handling) != 0 then
|
316
381
|
i += 1 while
|
317
|
-
i < str_len and (@attrs[i] & @attributes.
|
382
|
+
i < str_len and (@attrs[i] & @attributes.regexp_handling) != 0
|
318
383
|
|
319
|
-
res << RDoc::Markup::
|
320
|
-
|
384
|
+
res << RDoc::Markup::RegexpHandling.new(current_attr,
|
385
|
+
copy_string(start_pos, i))
|
321
386
|
start_pos = i
|
322
387
|
next
|
323
388
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
##
|
3
3
|
# We manage a set of attributes. Each attribute has a symbol name and a bit
|
4
4
|
# value.
|
@@ -6,21 +6,21 @@
|
|
6
6
|
class RDoc::Markup::Attributes
|
7
7
|
|
8
8
|
##
|
9
|
-
# The
|
9
|
+
# The regexp handling attribute type. See RDoc::Markup#add_regexp_handling
|
10
10
|
|
11
|
-
attr_reader :
|
11
|
+
attr_reader :regexp_handling
|
12
12
|
|
13
13
|
##
|
14
14
|
# Creates a new attributes set.
|
15
15
|
|
16
16
|
def initialize
|
17
|
-
@
|
17
|
+
@regexp_handling = 1
|
18
18
|
|
19
19
|
@name_to_bitmap = [
|
20
|
-
[:
|
20
|
+
[:_REGEXP_HANDLING_, @regexp_handling],
|
21
21
|
]
|
22
22
|
|
23
|
-
@next_bitmap = @
|
23
|
+
@next_bitmap = @regexp_handling << 1
|
24
24
|
end
|
25
25
|
|
26
26
|
##
|
@@ -61,7 +61,7 @@ class RDoc::Markup::Attributes
|
|
61
61
|
return enum_for __method__, bitmap unless block_given?
|
62
62
|
|
63
63
|
@name_to_bitmap.each do |name, bit|
|
64
|
-
next if bit == @
|
64
|
+
next if bit == @regexp_handling
|
65
65
|
|
66
66
|
yield name.to_s if (bitmap & bit) != 0
|
67
67
|
end
|
data/lib/rdoc/markup/document.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
##
|
3
3
|
# Base class for RDoc markup formatters
|
4
4
|
#
|
@@ -50,7 +50,7 @@ class RDoc::Markup::Formatter
|
|
50
50
|
|
51
51
|
@markup = markup || RDoc::Markup.new
|
52
52
|
@am = @markup.attribute_manager
|
53
|
-
@am.
|
53
|
+
@am.add_regexp_handling(/<br>/, :HARD_BREAK)
|
54
54
|
|
55
55
|
@attributes = @am.attributes
|
56
56
|
|
@@ -78,23 +78,24 @@ class RDoc::Markup::Formatter
|
|
78
78
|
end
|
79
79
|
|
80
80
|
##
|
81
|
-
# Adds a
|
81
|
+
# Adds a regexp handling for links of the form rdoc-...:
|
82
82
|
|
83
|
-
def
|
84
|
-
@markup.
|
83
|
+
def add_regexp_handling_RDOCLINK
|
84
|
+
@markup.add_regexp_handling(/rdoc-[a-z]+:[^\s\]]+/, :RDOCLINK)
|
85
85
|
end
|
86
86
|
|
87
87
|
##
|
88
|
-
# Adds a
|
88
|
+
# Adds a regexp handling for links of the form {<text>}[<url>] and
|
89
|
+
# <word>[<url>]
|
89
90
|
|
90
|
-
def
|
91
|
-
@markup.
|
92
|
-
|
93
|
-
|
94
|
-
|
91
|
+
def add_regexp_handling_TIDYLINK
|
92
|
+
@markup.add_regexp_handling(/(?:
|
93
|
+
\{.*?\} | # multi-word label
|
94
|
+
\b[^\s{}]+? # single-word label
|
95
|
+
)
|
95
96
|
|
96
|
-
|
97
|
-
|
97
|
+
\[\S+?\] # link target
|
98
|
+
/x, :TIDYLINK)
|
98
99
|
end
|
99
100
|
|
100
101
|
##
|
@@ -133,8 +134,8 @@ class RDoc::Markup::Formatter
|
|
133
134
|
when RDoc::Markup::AttrChanger then
|
134
135
|
off_tags res, item
|
135
136
|
on_tags res, item
|
136
|
-
when RDoc::Markup::
|
137
|
-
res <<
|
137
|
+
when RDoc::Markup::RegexpHandling then
|
138
|
+
res << convert_regexp_handling(item)
|
138
139
|
else
|
139
140
|
raise "Unknown flow element: #{item.inspect}"
|
140
141
|
end
|
@@ -144,29 +145,29 @@ class RDoc::Markup::Formatter
|
|
144
145
|
end
|
145
146
|
|
146
147
|
##
|
147
|
-
# Converts added
|
148
|
+
# Converts added regexp handlings. See RDoc::Markup#add_regexp_handling
|
148
149
|
|
149
|
-
def
|
150
|
-
return
|
150
|
+
def convert_regexp_handling target
|
151
|
+
return target.text if in_tt?
|
151
152
|
|
152
153
|
handled = false
|
153
154
|
|
154
|
-
@attributes.each_name_of
|
155
|
-
method_name = "
|
155
|
+
@attributes.each_name_of target.type do |name|
|
156
|
+
method_name = "handle_regexp_#{name}"
|
156
157
|
|
157
158
|
if respond_to? method_name then
|
158
|
-
|
159
|
+
target.text = public_send method_name, target
|
159
160
|
handled = true
|
160
161
|
end
|
161
162
|
end
|
162
163
|
|
163
164
|
unless handled then
|
164
|
-
|
165
|
+
target_name = @attributes.as_string target.type
|
165
166
|
|
166
|
-
raise RDoc::Error, "Unhandled
|
167
|
+
raise RDoc::Error, "Unhandled regexp handling #{target_name}: #{target}"
|
167
168
|
end
|
168
169
|
|
169
|
-
|
170
|
+
target.text
|
170
171
|
end
|
171
172
|
|
172
173
|
##
|