rdoc 6.4.0 → 6.6.0

Sign up to get free protection for your applications and to get access to all the features.
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 }")