rdoc 6.4.0 → 6.6.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.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.rdoc +1 -2
  3. data/LEGAL.rdoc +1 -1
  4. data/README.rdoc +2 -2
  5. data/TODO.rdoc +1 -1
  6. data/exe/rdoc +0 -1
  7. data/lib/rdoc/alias.rb +0 -1
  8. data/lib/rdoc/anon_class.rb +0 -1
  9. data/lib/rdoc/any_method.rb +17 -2
  10. data/lib/rdoc/attr.rb +0 -1
  11. data/lib/rdoc/class_module.rb +0 -1
  12. data/lib/rdoc/code_objects.rb +1 -2
  13. data/lib/rdoc/comment.rb +20 -41
  14. data/lib/rdoc/constant.rb +0 -1
  15. data/lib/rdoc/context/section.rb +2 -1
  16. data/lib/rdoc/context.rb +1 -3
  17. data/lib/rdoc/cross_reference.rb +17 -2
  18. data/lib/rdoc/encoding.rb +1 -6
  19. data/lib/rdoc/erb_partial.rb +0 -1
  20. data/lib/rdoc/erbio.rb +2 -7
  21. data/lib/rdoc/extend.rb +0 -1
  22. data/lib/rdoc/generator/darkfish.rb +2 -6
  23. data/lib/rdoc/generator/json_index.rb +2 -2
  24. data/lib/rdoc/generator/markup.rb +1 -2
  25. data/lib/rdoc/generator/ri.rb +0 -1
  26. data/lib/rdoc/generator/template/darkfish/_head.rhtml +10 -10
  27. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +27 -3
  28. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +22 -2
  29. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +1 -1
  30. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +25 -4
  31. data/lib/rdoc/generator/template/darkfish/class.rhtml +28 -20
  32. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +44 -7
  33. data/lib/rdoc/generator/template/darkfish/index.rhtml +1 -1
  34. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +14 -1
  35. data/lib/rdoc/generator/template/darkfish/js/search.js +4 -4
  36. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +7 -6
  37. data/lib/rdoc/generator/template/json_index/js/navigation.js +8 -8
  38. data/lib/rdoc/generator.rb +5 -5
  39. data/lib/rdoc/ghost_method.rb +0 -1
  40. data/lib/rdoc/i18n.rb +1 -1
  41. data/lib/rdoc/include.rb +0 -1
  42. data/lib/rdoc/known_classes.rb +5 -4
  43. data/lib/rdoc/markdown/entities.rb +0 -1
  44. data/lib/rdoc/markdown/literals.rb +98 -40
  45. data/lib/rdoc/markdown.kpeg +26 -19
  46. data/lib/rdoc/markdown.rb +326 -227
  47. data/lib/rdoc/markup/attr_changer.rb +0 -1
  48. data/lib/rdoc/markup/attr_span.rb +0 -1
  49. data/lib/rdoc/markup/attribute_manager.rb +29 -36
  50. data/lib/rdoc/markup/attributes.rb +0 -1
  51. data/lib/rdoc/markup/blank_line.rb +0 -1
  52. data/lib/rdoc/markup/block_quote.rb +0 -1
  53. data/lib/rdoc/markup/document.rb +0 -1
  54. data/lib/rdoc/markup/formatter.rb +0 -1
  55. data/lib/rdoc/markup/hard_break.rb +0 -1
  56. data/lib/rdoc/markup/heading.rb +0 -1
  57. data/lib/rdoc/markup/include.rb +0 -1
  58. data/lib/rdoc/markup/indented_paragraph.rb +0 -1
  59. data/lib/rdoc/markup/list.rb +0 -1
  60. data/lib/rdoc/markup/list_item.rb +0 -1
  61. data/lib/rdoc/markup/paragraph.rb +0 -1
  62. data/lib/rdoc/markup/parser.rb +12 -6
  63. data/lib/rdoc/markup/raw.rb +0 -1
  64. data/lib/rdoc/markup/regexp_handling.rb +0 -1
  65. data/lib/rdoc/markup/rule.rb +0 -1
  66. data/lib/rdoc/markup/to_ansi.rb +0 -1
  67. data/lib/rdoc/markup/to_html.rb +21 -16
  68. data/lib/rdoc/markup/to_html_crossref.rb +0 -1
  69. data/lib/rdoc/markup/to_html_snippet.rb +0 -1
  70. data/lib/rdoc/markup/to_joined_paragraph.rb +2 -3
  71. data/lib/rdoc/markup/to_label.rb +1 -2
  72. data/lib/rdoc/markup/to_markdown.rb +0 -1
  73. data/lib/rdoc/markup/to_rdoc.rb +3 -21
  74. data/lib/rdoc/markup/to_table_of_contents.rb +0 -1
  75. data/lib/rdoc/markup/to_test.rb +0 -1
  76. data/lib/rdoc/markup/to_tt_only.rb +0 -1
  77. data/lib/rdoc/markup/verbatim.rb +0 -1
  78. data/lib/rdoc/markup.rb +35 -667
  79. data/lib/rdoc/meta_method.rb +0 -1
  80. data/lib/rdoc/method_attr.rb +1 -2
  81. data/lib/rdoc/mixin.rb +0 -1
  82. data/lib/rdoc/normal_class.rb +1 -2
  83. data/lib/rdoc/normal_module.rb +1 -2
  84. data/lib/rdoc/options.rb +36 -20
  85. data/lib/rdoc/parser/c.rb +89 -101
  86. data/lib/rdoc/parser/changelog.rb +0 -1
  87. data/lib/rdoc/parser/markdown.rb +0 -2
  88. data/lib/rdoc/parser/rd.rb +0 -1
  89. data/lib/rdoc/parser/ripper_state_lex.rb +1 -1
  90. data/lib/rdoc/parser/ruby.rb +29 -14
  91. data/lib/rdoc/parser/ruby_tools.rb +0 -2
  92. data/lib/rdoc/parser/text.rb +0 -1
  93. data/lib/rdoc/parser.rb +19 -2
  94. data/lib/rdoc/rd/block_parser.rb +666 -12
  95. data/lib/rdoc/rd/block_parser.ry +13 -9
  96. data/lib/rdoc/rd/inline.rb +0 -1
  97. data/lib/rdoc/rd/inline_parser.rb +3 -1
  98. data/lib/rdoc/rd.rb +3 -4
  99. data/lib/rdoc/rdoc.rb +19 -7
  100. data/lib/rdoc/require.rb +0 -1
  101. data/lib/rdoc/ri/driver.rb +20 -86
  102. data/lib/rdoc/ri/store.rb +0 -1
  103. data/lib/rdoc/ri.rb +4 -5
  104. data/lib/rdoc/rubygems_hook.rb +1 -1
  105. data/lib/rdoc/servlet.rb +1 -1
  106. data/lib/rdoc/single_class.rb +5 -1
  107. data/lib/rdoc/stats/quiet.rb +0 -1
  108. data/lib/rdoc/stats/verbose.rb +0 -2
  109. data/lib/rdoc/stats.rb +3 -4
  110. data/lib/rdoc/store.rb +4 -4
  111. data/lib/rdoc/task.rb +31 -5
  112. data/lib/rdoc/token_stream.rb +0 -1
  113. data/lib/rdoc/top_level.rb +0 -1
  114. data/lib/rdoc/version.rb +3 -1
  115. data/lib/rdoc.rb +46 -46
  116. metadata +9 -11
  117. data/Gemfile +0 -12
  118. data/Rakefile +0 -107
  119. data/bin/console +0 -7
  120. data/bin/setup +0 -6
  121. data/rdoc.gemspec +0 -249
@@ -20,4 +20,3 @@ class RDoc::Markup::AttrChanger
20
20
  end
21
21
 
22
22
  end
23
-
@@ -33,4 +33,3 @@ class RDoc::Markup::AttrSpan
33
33
  end
34
34
 
35
35
  end
36
-
@@ -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
- if exclusive && exclusive?(bitmap)
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
- all_tags = @matching_word_pairs.keys
164
+ tags = "[#{tags.join("")}](?!#{PROTECT_ATTR})"
165
+ all_tags = "[#{@matching_word_pairs.keys.join("")}](?!#{PROTECT_ATTR})"
160
166
 
161
- re = /(^|\W|[#{all_tags.join("")}])([#{tags.join("")}])(\2*[#\\]?[\w:.\/\[\]-]+?\S?)\2(?!\2)([#{all_tags.join("")}]|\W|$)/
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
- attr = @matching_word_pairs[$2]
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
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
- $1 + NON_PRINTING_START + $2 + NON_PRINTING_END + $3 + NON_PRINTING_START + $2 + NON_PRINTING_END + $4
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
- if !exclusive
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
- updated = attrs.set_attrs($`.length + $1.length, $2.length, attr)
188
+ w = (m = ($~))[2]
189
+ updated = attrs.set_attrs(m.begin(2), w.length, attr)
186
190
  if updated
187
- NULL * $1.length + $2 + NULL * $3.length
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
- if exclusive && exclusive?(bitmap)
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 = $1.length + 2
210
+ html_length = $~.match_length(1) + 2 # "<>".length
213
211
  seq = NULL * html_length
214
- attrs.set_attrs($`.length + html_length, $2.length, attr)
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
- if exclusive
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
-
@@ -68,4 +68,3 @@ class RDoc::Markup::Attributes
68
68
  end
69
69
 
70
70
  end
71
-
@@ -25,4 +25,3 @@ class RDoc::Markup::BlankLine
25
25
  end
26
26
 
27
27
  end
28
-
@@ -12,4 +12,3 @@ class RDoc::Markup::BlockQuote < RDoc::Markup::Raw
12
12
  end
13
13
 
14
14
  end
15
-
@@ -162,4 +162,3 @@ class RDoc::Markup::Document
162
162
  end
163
163
 
164
164
  end
165
-
@@ -263,4 +263,3 @@ class RDoc::Markup::Formatter
263
263
  end
264
264
 
265
265
  end
266
-
@@ -29,4 +29,3 @@ class RDoc::Markup::HardBreak
29
29
  end
30
30
 
31
31
  end
32
-
@@ -76,4 +76,3 @@ RDoc::Markup::Heading =
76
76
  end
77
77
 
78
78
  end
79
-
@@ -40,4 +40,3 @@ class RDoc::Markup::Include
40
40
  end
41
41
 
42
42
  end
43
-
@@ -45,4 +45,3 @@ class RDoc::Markup::IndentedParagraph < RDoc::Markup::Raw
45
45
  end
46
46
 
47
47
  end
48
-
@@ -99,4 +99,3 @@ class RDoc::Markup::List
99
99
  end
100
100
 
101
101
  end
102
-
@@ -97,4 +97,3 @@ class RDoc::Markup::ListItem
97
97
  end
98
98
 
99
99
  end
100
-
@@ -26,4 +26,3 @@ class RDoc::Markup::Paragraph < RDoc::Markup::Raw
26
26
  end
27
27
 
28
28
  end
29
-
@@ -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, _, column = get
376
- if type == :NEWLINE
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
- [:BLOCKQUOTE, @s[1], *pos]
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?$/)
@@ -67,4 +67,3 @@ class RDoc::Markup::Raw
67
67
  end
68
68
 
69
69
  end
70
-
@@ -38,4 +38,3 @@ class RDoc::Markup::RegexpHandling
38
38
  end
39
39
 
40
40
  end
41
-
@@ -18,4 +18,3 @@ class RDoc::Markup::Rule < Struct.new :weight
18
18
  end
19
19
 
20
20
  end
21
-
@@ -91,4 +91,3 @@ class RDoc::Markup::ToAnsi < RDoc::Markup::ToRdoc
91
91
  end
92
92
 
93
93
  end
94
-
@@ -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\.)\S+\w/,
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
- "<img src=\"#{$'}\">"
99
- else
100
- url =~ /\Ardoc-[a-z]+:/
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
- label = handle_RDOCLINK label if /^rdoc-image:/ =~ label
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 << '>' << CGI.escapeHTML(text) << "</th>\n"
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 << '>' << CGI.escapeHTML(text) << "</td>\n"
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
- eval("BEGIN {return true}\n#{text}")
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
-
@@ -173,4 +173,3 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
173
173
  end
174
174
 
175
175
  end
176
-
@@ -282,4 +282,3 @@ class RDoc::Markup::ToHtmlSnippet < RDoc::Markup::ToHtml
282
282
  end
283
283
 
284
284
  end
285
-
@@ -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.map do |string, chunk|
28
+ end.flat_map do |string, chunk|
29
29
  string ? chunk.join.rstrip : chunk
30
- end.flatten
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
-
@@ -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
-
@@ -189,4 +189,3 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
189
189
  end
190
190
 
191
191
  end
192
-
@@ -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
- @res << prefix
340
-
341
- while text.length > text_len
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
-
@@ -86,4 +86,3 @@ class RDoc::Markup::ToTableOfContents < RDoc::Markup::Formatter
86
86
  # :startdoc:
87
87
 
88
88
  end
89
-
@@ -67,4 +67,3 @@ class RDoc::Markup::ToTest < RDoc::Markup::Formatter
67
67
  # :startdoc:
68
68
 
69
69
  end
70
-
@@ -118,4 +118,3 @@ class RDoc::Markup::ToTtOnly < RDoc::Markup::Formatter
118
118
  end
119
119
 
120
120
  end
121
-
@@ -81,4 +81,3 @@ class RDoc::Markup::Verbatim < RDoc::Markup::Raw
81
81
  end
82
82
 
83
83
  end
84
-