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
data/lib/rdoc/markdown.rb CHANGED
@@ -175,7 +175,7 @@
175
175
  # [dingus]: http://daringfireball.net/projects/markdown/dingus
176
176
  # [GFM]: https://github.github.com/gfm/
177
177
  # [pegmarkdown]: https://github.com/jgm/peg-markdown
178
- # [PHPE]: http://michelf.com/projects/php-markdown/extra/#def-list
178
+ # [PHPE]: https://michelf.ca/projects/php-markdown/extra/#def-list
179
179
  # [syntax]: http://daringfireball.net/projects/markdown/syntax
180
180
  #--
181
181
  # Last updated to jgm/peg-markdown commit 8f8fc22ef0
@@ -199,6 +199,7 @@ class RDoc::Markdown
199
199
  @result = nil
200
200
  @failed_rule = nil
201
201
  @failing_rule_offset = -1
202
+ @line_offsets = nil
202
203
 
203
204
  setup_foreign_grammar
204
205
  end
@@ -208,30 +209,75 @@ class RDoc::Markdown
208
209
  attr_accessor :result, :pos
209
210
 
210
211
  def current_column(target=pos)
211
- if c = string.rindex("\n", target-1)
212
- return target - c - 1
212
+ if string[target] == "\n" && (c = string.rindex("\n", target-1) || -1)
213
+ return target - c
214
+ elsif c = string.rindex("\n", target)
215
+ return target - c
213
216
  end
214
217
 
215
218
  target + 1
216
219
  end
217
220
 
218
- def current_line(target=pos)
219
- cur_offset = 0
220
- cur_line = 0
221
+ def position_line_offsets
222
+ unless @position_line_offsets
223
+ @position_line_offsets = []
224
+ total = 0
225
+ string.each_line do |line|
226
+ total += line.size
227
+ @position_line_offsets << total
228
+ end
229
+ end
230
+ @position_line_offsets
231
+ end
232
+
233
+ if [].respond_to? :bsearch_index
234
+ def current_line(target=pos)
235
+ if line = position_line_offsets.bsearch_index {|x| x > target }
236
+ return line + 1
237
+ end
238
+ raise "Target position #{target} is outside of string"
239
+ end
240
+ else
241
+ def current_line(target=pos)
242
+ if line = position_line_offsets.index {|x| x > target }
243
+ return line + 1
244
+ end
221
245
 
222
- string.each_line do |line|
223
- cur_line += 1
224
- cur_offset += line.size
225
- return cur_line if cur_offset >= target
246
+ raise "Target position #{target} is outside of string"
226
247
  end
248
+ end
227
249
 
228
- -1
250
+ def current_character(target=pos)
251
+ if target < 0 || target >= string.size
252
+ raise "Target position #{target} is outside of string"
253
+ end
254
+ string[target, 1]
255
+ end
256
+
257
+ KpegPosInfo = Struct.new(:pos, :lno, :col, :line, :char)
258
+
259
+ def current_pos_info(target=pos)
260
+ l = current_line target
261
+ c = current_column target
262
+ ln = get_line(l-1)
263
+ chr = string[target,1]
264
+ KpegPosInfo.new(target, l, c, ln, chr)
229
265
  end
230
266
 
231
267
  def lines
232
- lines = []
233
- string.each_line { |l| lines << l }
234
- lines
268
+ string.lines
269
+ end
270
+
271
+ def get_line(no)
272
+ loff = position_line_offsets
273
+ if no < 0
274
+ raise "Line No is out of range: #{no} < 0"
275
+ elsif no >= loff.size
276
+ raise "Line No is out of range: #{no} >= #{loff.size}"
277
+ end
278
+ lend = loff[no]-1
279
+ lstart = no > 0 ? loff[no-1] : 0
280
+ string[lstart..lend]
235
281
  end
236
282
 
237
283
 
@@ -245,6 +291,7 @@ class RDoc::Markdown
245
291
  @string = string
246
292
  @string_size = string ? string.size : 0
247
293
  @pos = pos
294
+ @position_line_offsets = nil
248
295
  end
249
296
 
250
297
  def show_pos
@@ -269,30 +316,22 @@ class RDoc::Markdown
269
316
  end
270
317
 
271
318
  def failure_caret
272
- l = current_line @failing_rule_offset
273
- c = current_column @failing_rule_offset
274
-
275
- line = lines[l-1]
276
- "#{line}\n#{' ' * (c - 1)}^"
319
+ p = current_pos_info @failing_rule_offset
320
+ "#{p.line.chomp}\n#{' ' * (p.col - 1)}^"
277
321
  end
278
322
 
279
323
  def failure_character
280
- l = current_line @failing_rule_offset
281
- c = current_column @failing_rule_offset
282
- lines[l-1][c-1, 1]
324
+ current_character @failing_rule_offset
283
325
  end
284
326
 
285
327
  def failure_oneline
286
- l = current_line @failing_rule_offset
287
- c = current_column @failing_rule_offset
288
-
289
- char = lines[l-1][c-1, 1]
328
+ p = current_pos_info @failing_rule_offset
290
329
 
291
330
  if @failed_rule.kind_of? Symbol
292
331
  info = self.class::Rules[@failed_rule]
293
- "@#{l}:#{c} failed rule '#{info.name}', got '#{char}'"
332
+ "@#{p.lno}:#{p.col} failed rule '#{info.name}', got '#{p.char}'"
294
333
  else
295
- "@#{l}:#{c} failed rule '#{@failed_rule}', got '#{char}'"
334
+ "@#{p.lno}:#{p.col} failed rule '#{@failed_rule}', got '#{p.char}'"
296
335
  end
297
336
  end
298
337
 
@@ -305,10 +344,9 @@ class RDoc::Markdown
305
344
 
306
345
  def show_error(io=STDOUT)
307
346
  error_pos = @failing_rule_offset
308
- line_no = current_line(error_pos)
309
- col_no = current_column(error_pos)
347
+ p = current_pos_info(error_pos)
310
348
 
311
- io.puts "On line #{line_no}, column #{col_no}:"
349
+ io.puts "On line #{p.lno}, column #{p.col}:"
312
350
 
313
351
  if @failed_rule.kind_of? Symbol
314
352
  info = self.class::Rules[@failed_rule]
@@ -317,10 +355,9 @@ class RDoc::Markdown
317
355
  io.puts "Failed to match rule '#{@failed_rule}'"
318
356
  end
319
357
 
320
- io.puts "Got: #{string[error_pos,1].inspect}"
321
- line = lines[line_no-1]
322
- io.puts "=> #{line}"
323
- io.print(" " * (col_no + 3))
358
+ io.puts "Got: #{p.char.inspect}"
359
+ io.puts "=> #{p.line}"
360
+ io.print(" " * (p.col + 2))
324
361
  io.puts "^"
325
362
  end
326
363
 
@@ -429,6 +466,7 @@ class RDoc::Markdown
429
466
  end
430
467
 
431
468
  def apply_with_args(rule, *args)
469
+ @result = nil
432
470
  memo_key = [rule, args]
433
471
  if m = @memoizations[memo_key][@pos]
434
472
  @pos = m.pos
@@ -462,6 +500,7 @@ class RDoc::Markdown
462
500
  end
463
501
 
464
502
  def apply(rule)
503
+ @result = nil
465
504
  if m = @memoizations[rule][@pos]
466
505
  @pos = m.pos
467
506
  if !m.set
@@ -533,11 +572,11 @@ class RDoc::Markdown
533
572
 
534
573
 
535
574
 
536
- require 'rdoc'
537
- require 'rdoc/markup/to_joined_paragraph'
538
- require 'rdoc/markdown/entities'
575
+ require_relative '../rdoc'
576
+ require_relative 'markup/to_joined_paragraph'
577
+ require_relative 'markdown/entities'
539
578
 
540
- require 'rdoc/markdown/literals'
579
+ require_relative 'markdown/literals'
541
580
 
542
581
  ##
543
582
  # Supported extensions
@@ -795,7 +834,7 @@ class RDoc::Markdown
795
834
 
796
835
  @note_order.each_with_index do |ref, index|
797
836
  label = index + 1
798
- note = @footnotes[ref]
837
+ note = @footnotes[ref] or raise ParseError, "footnote [^#{ref}] not found"
799
838
 
800
839
  link = "{^#{label}}[rdoc-label:footmark-#{label}:foottext-#{label}] "
801
840
  note.parts.unshift link
@@ -14918,7 +14957,7 @@ class RDoc::Markdown
14918
14957
  return _tmp
14919
14958
  end
14920
14959
 
14921
- # RawLine = (< (!"\r" !"\n" .)* @Newline > | < .+ > @Eof) { text }
14960
+ # RawLine = (< /[^\r\n]*/ @Newline > | < .+ > @Eof) { text }
14922
14961
  def _RawLine
14923
14962
 
14924
14963
  _save = self.pos
@@ -14930,36 +14969,7 @@ class RDoc::Markdown
14930
14969
 
14931
14970
  _save2 = self.pos
14932
14971
  while true # sequence
14933
- while true
14934
-
14935
- _save4 = self.pos
14936
- while true # sequence
14937
- _save5 = self.pos
14938
- _tmp = match_string("\r")
14939
- _tmp = _tmp ? nil : true
14940
- self.pos = _save5
14941
- unless _tmp
14942
- self.pos = _save4
14943
- break
14944
- end
14945
- _save6 = self.pos
14946
- _tmp = match_string("\n")
14947
- _tmp = _tmp ? nil : true
14948
- self.pos = _save6
14949
- unless _tmp
14950
- self.pos = _save4
14951
- break
14952
- end
14953
- _tmp = get_byte
14954
- unless _tmp
14955
- self.pos = _save4
14956
- end
14957
- break
14958
- end # end sequence
14959
-
14960
- break unless _tmp
14961
- end
14962
- _tmp = true
14972
+ _tmp = scan(/\G(?-mix:[^\r\n]*)/)
14963
14973
  unless _tmp
14964
14974
  self.pos = _save2
14965
14975
  break
@@ -14977,10 +14987,10 @@ class RDoc::Markdown
14977
14987
  break if _tmp
14978
14988
  self.pos = _save1
14979
14989
 
14980
- _save7 = self.pos
14990
+ _save3 = self.pos
14981
14991
  while true # sequence
14982
14992
  _text_start = self.pos
14983
- _save8 = self.pos
14993
+ _save4 = self.pos
14984
14994
  _tmp = get_byte
14985
14995
  if _tmp
14986
14996
  while true
@@ -14989,18 +14999,18 @@ class RDoc::Markdown
14989
14999
  end
14990
15000
  _tmp = true
14991
15001
  else
14992
- self.pos = _save8
15002
+ self.pos = _save4
14993
15003
  end
14994
15004
  if _tmp
14995
15005
  text = get_text(_text_start)
14996
15006
  end
14997
15007
  unless _tmp
14998
- self.pos = _save7
15008
+ self.pos = _save3
14999
15009
  break
15000
15010
  end
15001
15011
  _tmp = _Eof()
15002
15012
  unless _tmp
15003
- self.pos = _save7
15013
+ self.pos = _save3
15004
15014
  end
15005
15015
  break
15006
15016
  end # end sequence
@@ -15546,7 +15556,7 @@ class RDoc::Markdown
15546
15556
  return _tmp
15547
15557
  end
15548
15558
 
15549
- # RawNoteBlock = @StartList:a (!@BlankLine OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }
15559
+ # RawNoteBlock = @StartList:a (!@BlankLine !RawNoteReference OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }
15550
15560
  def _RawNoteBlock
15551
15561
 
15552
15562
  _save = self.pos
@@ -15569,6 +15579,14 @@ class RDoc::Markdown
15569
15579
  self.pos = _save2
15570
15580
  break
15571
15581
  end
15582
+ _save4 = self.pos
15583
+ _tmp = apply(:_RawNoteReference)
15584
+ _tmp = _tmp ? nil : true
15585
+ self.pos = _save4
15586
+ unless _tmp
15587
+ self.pos = _save2
15588
+ break
15589
+ end
15572
15590
  _tmp = apply(:_OptionallyIndentedLine)
15573
15591
  l = @result
15574
15592
  unless _tmp
@@ -15586,26 +15604,34 @@ class RDoc::Markdown
15586
15604
  if _tmp
15587
15605
  while true
15588
15606
 
15589
- _save4 = self.pos
15607
+ _save5 = self.pos
15590
15608
  while true # sequence
15591
- _save5 = self.pos
15609
+ _save6 = self.pos
15592
15610
  _tmp = _BlankLine()
15593
15611
  _tmp = _tmp ? nil : true
15594
- self.pos = _save5
15612
+ self.pos = _save6
15595
15613
  unless _tmp
15596
- self.pos = _save4
15614
+ self.pos = _save5
15615
+ break
15616
+ end
15617
+ _save7 = self.pos
15618
+ _tmp = apply(:_RawNoteReference)
15619
+ _tmp = _tmp ? nil : true
15620
+ self.pos = _save7
15621
+ unless _tmp
15622
+ self.pos = _save5
15597
15623
  break
15598
15624
  end
15599
15625
  _tmp = apply(:_OptionallyIndentedLine)
15600
15626
  l = @result
15601
15627
  unless _tmp
15602
- self.pos = _save4
15628
+ self.pos = _save5
15603
15629
  break
15604
15630
  end
15605
15631
  @result = begin; a << l ; end
15606
15632
  _tmp = true
15607
15633
  unless _tmp
15608
- self.pos = _save4
15634
+ self.pos = _save5
15609
15635
  end
15610
15636
  break
15611
15637
  end # end sequence
@@ -15907,7 +15933,7 @@ class RDoc::Markdown
15907
15933
  return _tmp
15908
15934
  end
15909
15935
 
15910
- # Table = &{ github? } TableRow:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }
15936
+ # Table = &{ github? } TableHead:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }
15911
15937
  def _Table
15912
15938
 
15913
15939
  _save = self.pos
@@ -15919,7 +15945,7 @@ class RDoc::Markdown
15919
15945
  self.pos = _save
15920
15946
  break
15921
15947
  end
15922
- _tmp = apply(:_TableRow)
15948
+ _tmp = apply(:_TableHead)
15923
15949
  header = @result
15924
15950
  unless _tmp
15925
15951
  self.pos = _save
@@ -15963,18 +15989,18 @@ class RDoc::Markdown
15963
15989
  return _tmp
15964
15990
  end
15965
15991
 
15966
- # TableRow = TableItem+:row "|" @Newline { row }
15967
- def _TableRow
15992
+ # TableHead = TableItem2+:items "|"? @Newline { items }
15993
+ def _TableHead
15968
15994
 
15969
15995
  _save = self.pos
15970
15996
  while true # sequence
15971
15997
  _save1 = self.pos
15972
15998
  _ary = []
15973
- _tmp = apply(:_TableItem)
15999
+ _tmp = apply(:_TableItem2)
15974
16000
  if _tmp
15975
16001
  _ary << @result
15976
16002
  while true
15977
- _tmp = apply(:_TableItem)
16003
+ _tmp = apply(:_TableItem2)
15978
16004
  _ary << @result if _tmp
15979
16005
  break unless _tmp
15980
16006
  end
@@ -15983,12 +16009,17 @@ class RDoc::Markdown
15983
16009
  else
15984
16010
  self.pos = _save1
15985
16011
  end
15986
- row = @result
16012
+ items = @result
15987
16013
  unless _tmp
15988
16014
  self.pos = _save
15989
16015
  break
15990
16016
  end
16017
+ _save2 = self.pos
15991
16018
  _tmp = match_string("|")
16019
+ unless _tmp
16020
+ _tmp = true
16021
+ self.pos = _save2
16022
+ end
15992
16023
  unless _tmp
15993
16024
  self.pos = _save
15994
16025
  break
@@ -15998,7 +16029,7 @@ class RDoc::Markdown
15998
16029
  self.pos = _save
15999
16030
  break
16000
16031
  end
16001
- @result = begin; row ; end
16032
+ @result = begin; items ; end
16002
16033
  _tmp = true
16003
16034
  unless _tmp
16004
16035
  self.pos = _save
@@ -16006,90 +16037,92 @@ class RDoc::Markdown
16006
16037
  break
16007
16038
  end # end sequence
16008
16039
 
16009
- set_failed_rule :_TableRow unless _tmp
16040
+ set_failed_rule :_TableHead unless _tmp
16010
16041
  return _tmp
16011
16042
  end
16012
16043
 
16013
- # TableItem = "|" < (!"|" !@Newline .)+ > { text.strip }
16014
- def _TableItem
16044
+ # TableRow = ((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) "|"? @Newline { row }
16045
+ def _TableRow
16015
16046
 
16016
16047
  _save = self.pos
16017
16048
  while true # sequence
16018
- _tmp = match_string("|")
16019
- unless _tmp
16020
- self.pos = _save
16021
- break
16022
- end
16023
- _text_start = self.pos
16049
+
16024
16050
  _save1 = self.pos
16051
+ while true # choice
16025
16052
 
16026
- _save2 = self.pos
16027
- while true # sequence
16028
- _save3 = self.pos
16029
- _tmp = match_string("|")
16030
- _tmp = _tmp ? nil : true
16031
- self.pos = _save3
16032
- unless _tmp
16033
- self.pos = _save2
16053
+ _save2 = self.pos
16054
+ while true # sequence
16055
+ _tmp = apply(:_TableItem)
16056
+ item1 = @result
16057
+ unless _tmp
16058
+ self.pos = _save2
16059
+ break
16060
+ end
16061
+ _ary = []
16062
+ while true
16063
+ _tmp = apply(:_TableItem2)
16064
+ _ary << @result if _tmp
16065
+ break unless _tmp
16066
+ end
16067
+ _tmp = true
16068
+ @result = _ary
16069
+ items = @result
16070
+ unless _tmp
16071
+ self.pos = _save2
16072
+ break
16073
+ end
16074
+ @result = begin; [item1, *items] ; end
16075
+ _tmp = true
16076
+ unless _tmp
16077
+ self.pos = _save2
16078
+ end
16034
16079
  break
16035
- end
16080
+ end # end sequence
16081
+
16082
+ row = @result
16083
+ break if _tmp
16084
+ self.pos = _save1
16036
16085
  _save4 = self.pos
16037
- _tmp = _Newline()
16038
- _tmp = _tmp ? nil : true
16039
- self.pos = _save4
16040
- unless _tmp
16041
- self.pos = _save2
16042
- break
16043
- end
16044
- _tmp = get_byte
16045
- unless _tmp
16046
- self.pos = _save2
16086
+ _ary = []
16087
+ _tmp = apply(:_TableItem2)
16088
+ if _tmp
16089
+ _ary << @result
16090
+ while true
16091
+ _tmp = apply(:_TableItem2)
16092
+ _ary << @result if _tmp
16093
+ break unless _tmp
16094
+ end
16095
+ _tmp = true
16096
+ @result = _ary
16097
+ else
16098
+ self.pos = _save4
16047
16099
  end
16100
+ row = @result
16101
+ break if _tmp
16102
+ self.pos = _save1
16048
16103
  break
16049
- end # end sequence
16050
-
16051
- if _tmp
16052
- while true
16053
-
16054
- _save5 = self.pos
16055
- while true # sequence
16056
- _save6 = self.pos
16057
- _tmp = match_string("|")
16058
- _tmp = _tmp ? nil : true
16059
- self.pos = _save6
16060
- unless _tmp
16061
- self.pos = _save5
16062
- break
16063
- end
16064
- _save7 = self.pos
16065
- _tmp = _Newline()
16066
- _tmp = _tmp ? nil : true
16067
- self.pos = _save7
16068
- unless _tmp
16069
- self.pos = _save5
16070
- break
16071
- end
16072
- _tmp = get_byte
16073
- unless _tmp
16074
- self.pos = _save5
16075
- end
16076
- break
16077
- end # end sequence
16104
+ end # end choice
16078
16105
 
16079
- break unless _tmp
16080
- end
16106
+ unless _tmp
16107
+ self.pos = _save
16108
+ break
16109
+ end
16110
+ _save5 = self.pos
16111
+ _tmp = match_string("|")
16112
+ unless _tmp
16081
16113
  _tmp = true
16082
- else
16083
- self.pos = _save1
16114
+ self.pos = _save5
16084
16115
  end
16085
- if _tmp
16086
- text = get_text(_text_start)
16116
+ unless _tmp
16117
+ self.pos = _save
16118
+ break
16087
16119
  end
16120
+ _tmp = _Newline()
16088
16121
  unless _tmp
16089
16122
  self.pos = _save
16090
16123
  break
16091
16124
  end
16092
- @result = begin; text.strip ; end
16125
+ @result = begin; row ; end
16093
16126
  _tmp = true
16094
16127
  unless _tmp
16095
16128
  self.pos = _save
@@ -16097,46 +16130,46 @@ class RDoc::Markdown
16097
16130
  break
16098
16131
  end # end sequence
16099
16132
 
16100
- set_failed_rule :_TableItem unless _tmp
16133
+ set_failed_rule :_TableRow unless _tmp
16101
16134
  return _tmp
16102
16135
  end
16103
16136
 
16104
- # TableLine = TableColumn+:line "|" @Newline { line }
16105
- def _TableLine
16137
+ # TableItem2 = "|" TableItem
16138
+ def _TableItem2
16106
16139
 
16107
16140
  _save = self.pos
16108
16141
  while true # sequence
16109
- _save1 = self.pos
16110
- _ary = []
16111
- _tmp = apply(:_TableColumn)
16112
- if _tmp
16113
- _ary << @result
16114
- while true
16115
- _tmp = apply(:_TableColumn)
16116
- _ary << @result if _tmp
16117
- break unless _tmp
16118
- end
16119
- _tmp = true
16120
- @result = _ary
16121
- else
16122
- self.pos = _save1
16123
- end
16124
- line = @result
16142
+ _tmp = match_string("|")
16125
16143
  unless _tmp
16126
16144
  self.pos = _save
16127
16145
  break
16128
16146
  end
16129
- _tmp = match_string("|")
16147
+ _tmp = apply(:_TableItem)
16130
16148
  unless _tmp
16131
16149
  self.pos = _save
16132
- break
16133
16150
  end
16134
- _tmp = _Newline()
16151
+ break
16152
+ end # end sequence
16153
+
16154
+ set_failed_rule :_TableItem2 unless _tmp
16155
+ return _tmp
16156
+ end
16157
+
16158
+ # TableItem = < /(?:\\.|[^|\n])+/ > { text.strip.gsub(/\\(.)/, '\1') }
16159
+ def _TableItem
16160
+
16161
+ _save = self.pos
16162
+ while true # sequence
16163
+ _text_start = self.pos
16164
+ _tmp = scan(/\G(?-mix:(?:\\.|[^|\n])+)/)
16165
+ if _tmp
16166
+ text = get_text(_text_start)
16167
+ end
16135
16168
  unless _tmp
16136
16169
  self.pos = _save
16137
16170
  break
16138
16171
  end
16139
- @result = begin; line ; end
16172
+ @result = begin; text.strip.gsub(/\\(.)/, '\1') ; end
16140
16173
  _tmp = true
16141
16174
  unless _tmp
16142
16175
  self.pos = _save
@@ -16144,80 +16177,136 @@ class RDoc::Markdown
16144
16177
  break
16145
16178
  end # end sequence
16146
16179
 
16147
- set_failed_rule :_TableLine unless _tmp
16180
+ set_failed_rule :_TableItem unless _tmp
16148
16181
  return _tmp
16149
16182
  end
16150
16183
 
16151
- # TableColumn = "|" < ("-"+ ":"? | ":" "-"*) > { text.start_with?(":") ? :left : text.end_with?(":") ? :right : nil }
16152
- def _TableColumn
16184
+ # TableLine = ((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) "|"? @Newline { line }
16185
+ def _TableLine
16153
16186
 
16154
16187
  _save = self.pos
16155
16188
  while true # sequence
16156
- _tmp = match_string("|")
16157
- unless _tmp
16158
- self.pos = _save
16159
- break
16160
- end
16161
- _text_start = self.pos
16162
16189
 
16163
16190
  _save1 = self.pos
16164
16191
  while true # choice
16165
16192
 
16166
16193
  _save2 = self.pos
16167
16194
  while true # sequence
16168
- _save3 = self.pos
16169
- _tmp = match_string("-")
16170
- if _tmp
16171
- while true
16172
- _tmp = match_string("-")
16173
- break unless _tmp
16174
- end
16175
- _tmp = true
16176
- else
16177
- self.pos = _save3
16178
- end
16195
+ _tmp = apply(:_TableAlign)
16196
+ align1 = @result
16179
16197
  unless _tmp
16180
16198
  self.pos = _save2
16181
16199
  break
16182
16200
  end
16183
- _save4 = self.pos
16184
- _tmp = match_string(":")
16201
+ _ary = []
16202
+ while true
16203
+ _tmp = apply(:_TableAlign2)
16204
+ _ary << @result if _tmp
16205
+ break unless _tmp
16206
+ end
16207
+ _tmp = true
16208
+ @result = _ary
16209
+ aligns = @result
16185
16210
  unless _tmp
16186
- _tmp = true
16187
- self.pos = _save4
16211
+ self.pos = _save2
16212
+ break
16188
16213
  end
16214
+ @result = begin; [align1, *aligns] ; end
16215
+ _tmp = true
16189
16216
  unless _tmp
16190
16217
  self.pos = _save2
16191
16218
  end
16192
16219
  break
16193
16220
  end # end sequence
16194
16221
 
16222
+ line = @result
16195
16223
  break if _tmp
16196
16224
  self.pos = _save1
16197
-
16198
- _save5 = self.pos
16199
- while true # sequence
16200
- _tmp = match_string(":")
16201
- unless _tmp
16202
- self.pos = _save5
16203
- break
16204
- end
16225
+ _save4 = self.pos
16226
+ _ary = []
16227
+ _tmp = apply(:_TableAlign2)
16228
+ if _tmp
16229
+ _ary << @result
16205
16230
  while true
16206
- _tmp = match_string("-")
16231
+ _tmp = apply(:_TableAlign2)
16232
+ _ary << @result if _tmp
16207
16233
  break unless _tmp
16208
16234
  end
16209
16235
  _tmp = true
16210
- unless _tmp
16211
- self.pos = _save5
16212
- end
16213
- break
16214
- end # end sequence
16215
-
16236
+ @result = _ary
16237
+ else
16238
+ self.pos = _save4
16239
+ end
16240
+ line = @result
16216
16241
  break if _tmp
16217
16242
  self.pos = _save1
16218
16243
  break
16219
16244
  end # end choice
16220
16245
 
16246
+ unless _tmp
16247
+ self.pos = _save
16248
+ break
16249
+ end
16250
+ _save5 = self.pos
16251
+ _tmp = match_string("|")
16252
+ unless _tmp
16253
+ _tmp = true
16254
+ self.pos = _save5
16255
+ end
16256
+ unless _tmp
16257
+ self.pos = _save
16258
+ break
16259
+ end
16260
+ _tmp = _Newline()
16261
+ unless _tmp
16262
+ self.pos = _save
16263
+ break
16264
+ end
16265
+ @result = begin; line ; end
16266
+ _tmp = true
16267
+ unless _tmp
16268
+ self.pos = _save
16269
+ end
16270
+ break
16271
+ end # end sequence
16272
+
16273
+ set_failed_rule :_TableLine unless _tmp
16274
+ return _tmp
16275
+ end
16276
+
16277
+ # TableAlign2 = "|" @Sp TableAlign
16278
+ def _TableAlign2
16279
+
16280
+ _save = self.pos
16281
+ while true # sequence
16282
+ _tmp = match_string("|")
16283
+ unless _tmp
16284
+ self.pos = _save
16285
+ break
16286
+ end
16287
+ _tmp = _Sp()
16288
+ unless _tmp
16289
+ self.pos = _save
16290
+ break
16291
+ end
16292
+ _tmp = apply(:_TableAlign)
16293
+ unless _tmp
16294
+ self.pos = _save
16295
+ end
16296
+ break
16297
+ end # end sequence
16298
+
16299
+ set_failed_rule :_TableAlign2 unless _tmp
16300
+ return _tmp
16301
+ end
16302
+
16303
+ # TableAlign = < /:?-+:?/ > @Sp { text.start_with?(":") ? (text.end_with?(":") ? :center : :left) : (text.end_with?(":") ? :right : nil) }
16304
+ def _TableAlign
16305
+
16306
+ _save = self.pos
16307
+ while true # sequence
16308
+ _text_start = self.pos
16309
+ _tmp = scan(/\G(?-mix::?-+:?)/)
16221
16310
  if _tmp
16222
16311
  text = get_text(_text_start)
16223
16312
  end
@@ -16225,8 +16314,15 @@ class RDoc::Markdown
16225
16314
  self.pos = _save
16226
16315
  break
16227
16316
  end
16228
- @result = begin; text.start_with?(":") ? :left :
16229
- text.end_with?(":") ? :right : nil
16317
+ _tmp = _Sp()
16318
+ unless _tmp
16319
+ self.pos = _save
16320
+ break
16321
+ end
16322
+ @result = begin;
16323
+ text.start_with?(":") ?
16324
+ (text.end_with?(":") ? :center : :left) :
16325
+ (text.end_with?(":") ? :right : nil)
16230
16326
  ; end
16231
16327
  _tmp = true
16232
16328
  unless _tmp
@@ -16235,7 +16331,7 @@ class RDoc::Markdown
16235
16331
  break
16236
16332
  end # end sequence
16237
16333
 
16238
- set_failed_rule :_TableColumn unless _tmp
16334
+ set_failed_rule :_TableAlign unless _tmp
16239
16335
  return _tmp
16240
16336
  end
16241
16337
 
@@ -16661,7 +16757,7 @@ class RDoc::Markdown
16661
16757
  Rules[:_OptionallyIndentedLine] = rule_info("OptionallyIndentedLine", "Indent? Line")
16662
16758
  Rules[:_StartList] = rule_info("StartList", "&. { [] }")
16663
16759
  Rules[:_Line] = rule_info("Line", "@RawLine:a { a }")
16664
- Rules[:_RawLine] = rule_info("RawLine", "(< (!\"\\r\" !\"\\n\" .)* @Newline > | < .+ > @Eof) { text }")
16760
+ Rules[:_RawLine] = rule_info("RawLine", "(< /[^\\r\\n]*/ @Newline > | < .+ > @Eof) { text }")
16665
16761
  Rules[:_SkipBlock] = rule_info("SkipBlock", "(HtmlBlock | (!\"\#\" !SetextBottom1 !SetextBottom2 !@BlankLine @RawLine)+ @BlankLine* | @BlankLine+ | @RawLine)")
16666
16762
  Rules[:_ExtendedSpecialChar] = rule_info("ExtendedSpecialChar", "&{ notes? } \"^\"")
16667
16763
  Rules[:_NoteReference] = rule_info("NoteReference", "&{ notes? } RawNoteReference:ref { note_for ref }")
@@ -16669,13 +16765,16 @@ class RDoc::Markdown
16669
16765
  Rules[:_Note] = rule_info("Note", "&{ notes? } @NonindentSpace RawNoteReference:ref \":\" @Sp @StartList:a RawNoteBlock:i { a.concat i } (&Indent RawNoteBlock:i { a.concat i })* { @footnotes[ref] = paragraph a nil }")
16670
16766
  Rules[:_InlineNote] = rule_info("InlineNote", "&{ notes? } \"^[\" @StartList:a (!\"]\" Inline:l { a << l })+ \"]\" { ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref }")
16671
16767
  Rules[:_Notes] = rule_info("Notes", "(Note | SkipBlock)*")
16672
- Rules[:_RawNoteBlock] = rule_info("RawNoteBlock", "@StartList:a (!@BlankLine OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }")
16768
+ Rules[:_RawNoteBlock] = rule_info("RawNoteBlock", "@StartList:a (!@BlankLine !RawNoteReference OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }")
16673
16769
  Rules[:_CodeFence] = rule_info("CodeFence", "&{ github? } Ticks3 (@Sp StrChunk:format)? Spnl < ((!\"`\" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text verbatim.format = format.intern if format.instance_of?(String) verbatim }")
16674
- Rules[:_Table] = rule_info("Table", "&{ github? } TableRow:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }")
16675
- Rules[:_TableRow] = rule_info("TableRow", "TableItem+:row \"|\" @Newline { row }")
16676
- Rules[:_TableItem] = rule_info("TableItem", "\"|\" < (!\"|\" !@Newline .)+ > { text.strip }")
16677
- Rules[:_TableLine] = rule_info("TableLine", "TableColumn+:line \"|\" @Newline { line }")
16678
- Rules[:_TableColumn] = rule_info("TableColumn", "\"|\" < (\"-\"+ \":\"? | \":\" \"-\"*) > { text.start_with?(\":\") ? :left : text.end_with?(\":\") ? :right : nil }")
16770
+ Rules[:_Table] = rule_info("Table", "&{ github? } TableHead:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }")
16771
+ Rules[:_TableHead] = rule_info("TableHead", "TableItem2+:items \"|\"? @Newline { items }")
16772
+ Rules[:_TableRow] = rule_info("TableRow", "((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) \"|\"? @Newline { row }")
16773
+ Rules[:_TableItem2] = rule_info("TableItem2", "\"|\" TableItem")
16774
+ Rules[:_TableItem] = rule_info("TableItem", "< /(?:\\\\.|[^|\\n])+/ > { text.strip.gsub(/\\\\(.)/, '\\1') }")
16775
+ Rules[:_TableLine] = rule_info("TableLine", "((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) \"|\"? @Newline { line }")
16776
+ Rules[:_TableAlign2] = rule_info("TableAlign2", "\"|\" @Sp TableAlign")
16777
+ Rules[:_TableAlign] = rule_info("TableAlign", "< /:?-+:?/ > @Sp { text.start_with?(\":\") ? (text.end_with?(\":\") ? :center : :left) : (text.end_with?(\":\") ? :right : nil) }")
16679
16778
  Rules[:_DefinitionList] = rule_info("DefinitionList", "&{ definition_lists? } DefinitionListItem+:list { RDoc::Markup::List.new :NOTE, *list.flatten }")
16680
16779
  Rules[:_DefinitionListItem] = rule_info("DefinitionListItem", "DefinitionListLabel+:label DefinitionListDefinition+:defns { list_items = [] list_items << RDoc::Markup::ListItem.new(label, defns.shift) list_items.concat defns.map { |defn| RDoc::Markup::ListItem.new nil, defn } unless list_items.empty? list_items }")
16681
16780
  Rules[:_DefinitionListLabel] = rule_info("DefinitionListLabel", "StrChunk:label @Sp @Newline { label }")