rdoc 6.4.0 → 6.5.0

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.

Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.rdoc +1 -2
  3. data/LEGAL.rdoc +1 -1
  4. data/exe/rdoc +0 -1
  5. data/lib/rdoc/any_method.rb +2 -2
  6. data/lib/rdoc/code_objects.rb +1 -2
  7. data/lib/rdoc/context/section.rb +2 -0
  8. data/lib/rdoc/context.rb +1 -3
  9. data/lib/rdoc/cross_reference.rb +17 -1
  10. data/lib/rdoc/generator/markup.rb +1 -1
  11. data/lib/rdoc/generator/template/darkfish/_head.rhtml +10 -10
  12. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +27 -3
  13. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +22 -2
  14. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +25 -4
  15. data/lib/rdoc/generator/template/darkfish/class.rhtml +22 -20
  16. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +24 -1
  17. data/lib/rdoc/generator/template/darkfish/index.rhtml +1 -1
  18. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +1 -1
  19. data/lib/rdoc/generator/template/darkfish/js/search.js +1 -1
  20. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +2 -2
  21. data/lib/rdoc/generator.rb +5 -5
  22. data/lib/rdoc/i18n.rb +1 -1
  23. data/lib/rdoc/known_classes.rb +5 -4
  24. data/lib/rdoc/markdown/literals.rb +24 -8
  25. data/lib/rdoc/markdown.kpeg +25 -18
  26. data/lib/rdoc/markdown.rb +323 -226
  27. data/lib/rdoc/markup/attribute_manager.rb +29 -35
  28. data/lib/rdoc/markup/parser.rb +12 -6
  29. data/lib/rdoc/markup/to_html.rb +18 -14
  30. data/lib/rdoc/markup/to_label.rb +1 -1
  31. data/lib/rdoc/markup/to_rdoc.rb +3 -20
  32. data/lib/rdoc/markup.rb +35 -667
  33. data/lib/rdoc/method_attr.rb +1 -1
  34. data/lib/rdoc/normal_class.rb +1 -1
  35. data/lib/rdoc/normal_module.rb +1 -1
  36. data/lib/rdoc/options.rb +33 -18
  37. data/lib/rdoc/parser/c.rb +89 -101
  38. data/lib/rdoc/parser/ruby.rb +25 -10
  39. data/lib/rdoc/parser.rb +19 -2
  40. data/lib/rdoc/rd/block_parser.rb +13 -9
  41. data/lib/rdoc/rd/block_parser.ry +12 -8
  42. data/lib/rdoc/rd/inline_parser.rb +1 -1
  43. data/lib/rdoc/rd.rb +3 -4
  44. data/lib/rdoc/rdoc.rb +17 -3
  45. data/lib/rdoc/ri/driver.rb +11 -78
  46. data/lib/rdoc/ri.rb +4 -5
  47. data/lib/rdoc/rubygems_hook.rb +1 -1
  48. data/lib/rdoc/servlet.rb +1 -1
  49. data/lib/rdoc/single_class.rb +5 -0
  50. data/lib/rdoc/stats.rb +3 -4
  51. data/lib/rdoc/store.rb +4 -4
  52. data/lib/rdoc/task.rb +3 -3
  53. data/lib/rdoc/version.rb +3 -1
  54. data/lib/rdoc.rb +46 -46
  55. metadata +4 -9
  56. data/Gemfile +0 -12
  57. data/Rakefile +0 -107
  58. data/bin/console +0 -7
  59. data/bin/setup +0 -6
  60. data/rdoc.gemspec +0 -249
data/lib/rdoc/markdown.rb CHANGED
@@ -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
 
@@ -533,11 +570,11 @@ class RDoc::Markdown
533
570
 
534
571
 
535
572
 
536
- require 'rdoc'
537
- require 'rdoc/markup/to_joined_paragraph'
538
- require 'rdoc/markdown/entities'
573
+ require_relative '../rdoc'
574
+ require_relative 'markup/to_joined_paragraph'
575
+ require_relative 'markdown/entities'
539
576
 
540
- require 'rdoc/markdown/literals'
577
+ require_relative 'markdown/literals'
541
578
 
542
579
  ##
543
580
  # Supported extensions
@@ -795,7 +832,7 @@ class RDoc::Markdown
795
832
 
796
833
  @note_order.each_with_index do |ref, index|
797
834
  label = index + 1
798
- note = @footnotes[ref]
835
+ note = @footnotes[ref] or raise ParseError, "footnote [^#{ref}] not found"
799
836
 
800
837
  link = "{^#{label}}[rdoc-label:footmark-#{label}:foottext-#{label}] "
801
838
  note.parts.unshift link
@@ -14918,7 +14955,7 @@ class RDoc::Markdown
14918
14955
  return _tmp
14919
14956
  end
14920
14957
 
14921
- # RawLine = (< (!"\r" !"\n" .)* @Newline > | < .+ > @Eof) { text }
14958
+ # RawLine = (< /[^\r\n]*/ @Newline > | < .+ > @Eof) { text }
14922
14959
  def _RawLine
14923
14960
 
14924
14961
  _save = self.pos
@@ -14930,36 +14967,7 @@ class RDoc::Markdown
14930
14967
 
14931
14968
  _save2 = self.pos
14932
14969
  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
14970
+ _tmp = scan(/\G(?-mix:[^\r\n]*)/)
14963
14971
  unless _tmp
14964
14972
  self.pos = _save2
14965
14973
  break
@@ -14977,10 +14985,10 @@ class RDoc::Markdown
14977
14985
  break if _tmp
14978
14986
  self.pos = _save1
14979
14987
 
14980
- _save7 = self.pos
14988
+ _save3 = self.pos
14981
14989
  while true # sequence
14982
14990
  _text_start = self.pos
14983
- _save8 = self.pos
14991
+ _save4 = self.pos
14984
14992
  _tmp = get_byte
14985
14993
  if _tmp
14986
14994
  while true
@@ -14989,18 +14997,18 @@ class RDoc::Markdown
14989
14997
  end
14990
14998
  _tmp = true
14991
14999
  else
14992
- self.pos = _save8
15000
+ self.pos = _save4
14993
15001
  end
14994
15002
  if _tmp
14995
15003
  text = get_text(_text_start)
14996
15004
  end
14997
15005
  unless _tmp
14998
- self.pos = _save7
15006
+ self.pos = _save3
14999
15007
  break
15000
15008
  end
15001
15009
  _tmp = _Eof()
15002
15010
  unless _tmp
15003
- self.pos = _save7
15011
+ self.pos = _save3
15004
15012
  end
15005
15013
  break
15006
15014
  end # end sequence
@@ -15546,7 +15554,7 @@ class RDoc::Markdown
15546
15554
  return _tmp
15547
15555
  end
15548
15556
 
15549
- # RawNoteBlock = @StartList:a (!@BlankLine OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }
15557
+ # RawNoteBlock = @StartList:a (!@BlankLine !RawNoteReference OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }
15550
15558
  def _RawNoteBlock
15551
15559
 
15552
15560
  _save = self.pos
@@ -15569,6 +15577,14 @@ class RDoc::Markdown
15569
15577
  self.pos = _save2
15570
15578
  break
15571
15579
  end
15580
+ _save4 = self.pos
15581
+ _tmp = apply(:_RawNoteReference)
15582
+ _tmp = _tmp ? nil : true
15583
+ self.pos = _save4
15584
+ unless _tmp
15585
+ self.pos = _save2
15586
+ break
15587
+ end
15572
15588
  _tmp = apply(:_OptionallyIndentedLine)
15573
15589
  l = @result
15574
15590
  unless _tmp
@@ -15586,26 +15602,34 @@ class RDoc::Markdown
15586
15602
  if _tmp
15587
15603
  while true
15588
15604
 
15589
- _save4 = self.pos
15605
+ _save5 = self.pos
15590
15606
  while true # sequence
15591
- _save5 = self.pos
15607
+ _save6 = self.pos
15592
15608
  _tmp = _BlankLine()
15593
15609
  _tmp = _tmp ? nil : true
15594
- self.pos = _save5
15610
+ self.pos = _save6
15595
15611
  unless _tmp
15596
- self.pos = _save4
15612
+ self.pos = _save5
15613
+ break
15614
+ end
15615
+ _save7 = self.pos
15616
+ _tmp = apply(:_RawNoteReference)
15617
+ _tmp = _tmp ? nil : true
15618
+ self.pos = _save7
15619
+ unless _tmp
15620
+ self.pos = _save5
15597
15621
  break
15598
15622
  end
15599
15623
  _tmp = apply(:_OptionallyIndentedLine)
15600
15624
  l = @result
15601
15625
  unless _tmp
15602
- self.pos = _save4
15626
+ self.pos = _save5
15603
15627
  break
15604
15628
  end
15605
15629
  @result = begin; a << l ; end
15606
15630
  _tmp = true
15607
15631
  unless _tmp
15608
- self.pos = _save4
15632
+ self.pos = _save5
15609
15633
  end
15610
15634
  break
15611
15635
  end # end sequence
@@ -15907,7 +15931,7 @@ class RDoc::Markdown
15907
15931
  return _tmp
15908
15932
  end
15909
15933
 
15910
- # Table = &{ github? } TableRow:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }
15934
+ # Table = &{ github? } TableHead:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }
15911
15935
  def _Table
15912
15936
 
15913
15937
  _save = self.pos
@@ -15919,7 +15943,7 @@ class RDoc::Markdown
15919
15943
  self.pos = _save
15920
15944
  break
15921
15945
  end
15922
- _tmp = apply(:_TableRow)
15946
+ _tmp = apply(:_TableHead)
15923
15947
  header = @result
15924
15948
  unless _tmp
15925
15949
  self.pos = _save
@@ -15963,18 +15987,18 @@ class RDoc::Markdown
15963
15987
  return _tmp
15964
15988
  end
15965
15989
 
15966
- # TableRow = TableItem+:row "|" @Newline { row }
15967
- def _TableRow
15990
+ # TableHead = TableItem2+:items "|"? @Newline { items }
15991
+ def _TableHead
15968
15992
 
15969
15993
  _save = self.pos
15970
15994
  while true # sequence
15971
15995
  _save1 = self.pos
15972
15996
  _ary = []
15973
- _tmp = apply(:_TableItem)
15997
+ _tmp = apply(:_TableItem2)
15974
15998
  if _tmp
15975
15999
  _ary << @result
15976
16000
  while true
15977
- _tmp = apply(:_TableItem)
16001
+ _tmp = apply(:_TableItem2)
15978
16002
  _ary << @result if _tmp
15979
16003
  break unless _tmp
15980
16004
  end
@@ -15983,12 +16007,17 @@ class RDoc::Markdown
15983
16007
  else
15984
16008
  self.pos = _save1
15985
16009
  end
15986
- row = @result
16010
+ items = @result
15987
16011
  unless _tmp
15988
16012
  self.pos = _save
15989
16013
  break
15990
16014
  end
16015
+ _save2 = self.pos
15991
16016
  _tmp = match_string("|")
16017
+ unless _tmp
16018
+ _tmp = true
16019
+ self.pos = _save2
16020
+ end
15992
16021
  unless _tmp
15993
16022
  self.pos = _save
15994
16023
  break
@@ -15998,7 +16027,7 @@ class RDoc::Markdown
15998
16027
  self.pos = _save
15999
16028
  break
16000
16029
  end
16001
- @result = begin; row ; end
16030
+ @result = begin; items ; end
16002
16031
  _tmp = true
16003
16032
  unless _tmp
16004
16033
  self.pos = _save
@@ -16006,90 +16035,92 @@ class RDoc::Markdown
16006
16035
  break
16007
16036
  end # end sequence
16008
16037
 
16009
- set_failed_rule :_TableRow unless _tmp
16038
+ set_failed_rule :_TableHead unless _tmp
16010
16039
  return _tmp
16011
16040
  end
16012
16041
 
16013
- # TableItem = "|" < (!"|" !@Newline .)+ > { text.strip }
16014
- def _TableItem
16042
+ # TableRow = ((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) "|"? @Newline { row }
16043
+ def _TableRow
16015
16044
 
16016
16045
  _save = self.pos
16017
16046
  while true # sequence
16018
- _tmp = match_string("|")
16019
- unless _tmp
16020
- self.pos = _save
16021
- break
16022
- end
16023
- _text_start = self.pos
16047
+
16024
16048
  _save1 = self.pos
16049
+ while true # choice
16025
16050
 
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
16051
+ _save2 = self.pos
16052
+ while true # sequence
16053
+ _tmp = apply(:_TableItem)
16054
+ item1 = @result
16055
+ unless _tmp
16056
+ self.pos = _save2
16057
+ break
16058
+ end
16059
+ _ary = []
16060
+ while true
16061
+ _tmp = apply(:_TableItem2)
16062
+ _ary << @result if _tmp
16063
+ break unless _tmp
16064
+ end
16065
+ _tmp = true
16066
+ @result = _ary
16067
+ items = @result
16068
+ unless _tmp
16069
+ self.pos = _save2
16070
+ break
16071
+ end
16072
+ @result = begin; [item1, *items] ; end
16073
+ _tmp = true
16074
+ unless _tmp
16075
+ self.pos = _save2
16076
+ end
16034
16077
  break
16035
- end
16078
+ end # end sequence
16079
+
16080
+ row = @result
16081
+ break if _tmp
16082
+ self.pos = _save1
16036
16083
  _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
16084
+ _ary = []
16085
+ _tmp = apply(:_TableItem2)
16086
+ if _tmp
16087
+ _ary << @result
16088
+ while true
16089
+ _tmp = apply(:_TableItem2)
16090
+ _ary << @result if _tmp
16091
+ break unless _tmp
16092
+ end
16093
+ _tmp = true
16094
+ @result = _ary
16095
+ else
16096
+ self.pos = _save4
16047
16097
  end
16098
+ row = @result
16099
+ break if _tmp
16100
+ self.pos = _save1
16048
16101
  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
16102
+ end # end choice
16078
16103
 
16079
- break unless _tmp
16080
- end
16104
+ unless _tmp
16105
+ self.pos = _save
16106
+ break
16107
+ end
16108
+ _save5 = self.pos
16109
+ _tmp = match_string("|")
16110
+ unless _tmp
16081
16111
  _tmp = true
16082
- else
16083
- self.pos = _save1
16112
+ self.pos = _save5
16084
16113
  end
16085
- if _tmp
16086
- text = get_text(_text_start)
16114
+ unless _tmp
16115
+ self.pos = _save
16116
+ break
16087
16117
  end
16118
+ _tmp = _Newline()
16088
16119
  unless _tmp
16089
16120
  self.pos = _save
16090
16121
  break
16091
16122
  end
16092
- @result = begin; text.strip ; end
16123
+ @result = begin; row ; end
16093
16124
  _tmp = true
16094
16125
  unless _tmp
16095
16126
  self.pos = _save
@@ -16097,46 +16128,46 @@ class RDoc::Markdown
16097
16128
  break
16098
16129
  end # end sequence
16099
16130
 
16100
- set_failed_rule :_TableItem unless _tmp
16131
+ set_failed_rule :_TableRow unless _tmp
16101
16132
  return _tmp
16102
16133
  end
16103
16134
 
16104
- # TableLine = TableColumn+:line "|" @Newline { line }
16105
- def _TableLine
16135
+ # TableItem2 = "|" TableItem
16136
+ def _TableItem2
16106
16137
 
16107
16138
  _save = self.pos
16108
16139
  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
16140
+ _tmp = match_string("|")
16125
16141
  unless _tmp
16126
16142
  self.pos = _save
16127
16143
  break
16128
16144
  end
16129
- _tmp = match_string("|")
16145
+ _tmp = apply(:_TableItem)
16130
16146
  unless _tmp
16131
16147
  self.pos = _save
16132
- break
16133
16148
  end
16134
- _tmp = _Newline()
16149
+ break
16150
+ end # end sequence
16151
+
16152
+ set_failed_rule :_TableItem2 unless _tmp
16153
+ return _tmp
16154
+ end
16155
+
16156
+ # TableItem = < /(?:\\.|[^|\n])+/ > { text.strip.gsub(/\\(.)/, '\1') }
16157
+ def _TableItem
16158
+
16159
+ _save = self.pos
16160
+ while true # sequence
16161
+ _text_start = self.pos
16162
+ _tmp = scan(/\G(?-mix:(?:\\.|[^|\n])+)/)
16163
+ if _tmp
16164
+ text = get_text(_text_start)
16165
+ end
16135
16166
  unless _tmp
16136
16167
  self.pos = _save
16137
16168
  break
16138
16169
  end
16139
- @result = begin; line ; end
16170
+ @result = begin; text.strip.gsub(/\\(.)/, '\1') ; end
16140
16171
  _tmp = true
16141
16172
  unless _tmp
16142
16173
  self.pos = _save
@@ -16144,80 +16175,136 @@ class RDoc::Markdown
16144
16175
  break
16145
16176
  end # end sequence
16146
16177
 
16147
- set_failed_rule :_TableLine unless _tmp
16178
+ set_failed_rule :_TableItem unless _tmp
16148
16179
  return _tmp
16149
16180
  end
16150
16181
 
16151
- # TableColumn = "|" < ("-"+ ":"? | ":" "-"*) > { text.start_with?(":") ? :left : text.end_with?(":") ? :right : nil }
16152
- def _TableColumn
16182
+ # TableLine = ((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) "|"? @Newline { line }
16183
+ def _TableLine
16153
16184
 
16154
16185
  _save = self.pos
16155
16186
  while true # sequence
16156
- _tmp = match_string("|")
16157
- unless _tmp
16158
- self.pos = _save
16159
- break
16160
- end
16161
- _text_start = self.pos
16162
16187
 
16163
16188
  _save1 = self.pos
16164
16189
  while true # choice
16165
16190
 
16166
16191
  _save2 = self.pos
16167
16192
  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
16193
+ _tmp = apply(:_TableAlign)
16194
+ align1 = @result
16179
16195
  unless _tmp
16180
16196
  self.pos = _save2
16181
16197
  break
16182
16198
  end
16183
- _save4 = self.pos
16184
- _tmp = match_string(":")
16199
+ _ary = []
16200
+ while true
16201
+ _tmp = apply(:_TableAlign2)
16202
+ _ary << @result if _tmp
16203
+ break unless _tmp
16204
+ end
16205
+ _tmp = true
16206
+ @result = _ary
16207
+ aligns = @result
16185
16208
  unless _tmp
16186
- _tmp = true
16187
- self.pos = _save4
16209
+ self.pos = _save2
16210
+ break
16188
16211
  end
16212
+ @result = begin; [align1, *aligns] ; end
16213
+ _tmp = true
16189
16214
  unless _tmp
16190
16215
  self.pos = _save2
16191
16216
  end
16192
16217
  break
16193
16218
  end # end sequence
16194
16219
 
16220
+ line = @result
16195
16221
  break if _tmp
16196
16222
  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
16223
+ _save4 = self.pos
16224
+ _ary = []
16225
+ _tmp = apply(:_TableAlign2)
16226
+ if _tmp
16227
+ _ary << @result
16205
16228
  while true
16206
- _tmp = match_string("-")
16229
+ _tmp = apply(:_TableAlign2)
16230
+ _ary << @result if _tmp
16207
16231
  break unless _tmp
16208
16232
  end
16209
16233
  _tmp = true
16210
- unless _tmp
16211
- self.pos = _save5
16212
- end
16213
- break
16214
- end # end sequence
16215
-
16234
+ @result = _ary
16235
+ else
16236
+ self.pos = _save4
16237
+ end
16238
+ line = @result
16216
16239
  break if _tmp
16217
16240
  self.pos = _save1
16218
16241
  break
16219
16242
  end # end choice
16220
16243
 
16244
+ unless _tmp
16245
+ self.pos = _save
16246
+ break
16247
+ end
16248
+ _save5 = self.pos
16249
+ _tmp = match_string("|")
16250
+ unless _tmp
16251
+ _tmp = true
16252
+ self.pos = _save5
16253
+ end
16254
+ unless _tmp
16255
+ self.pos = _save
16256
+ break
16257
+ end
16258
+ _tmp = _Newline()
16259
+ unless _tmp
16260
+ self.pos = _save
16261
+ break
16262
+ end
16263
+ @result = begin; line ; end
16264
+ _tmp = true
16265
+ unless _tmp
16266
+ self.pos = _save
16267
+ end
16268
+ break
16269
+ end # end sequence
16270
+
16271
+ set_failed_rule :_TableLine unless _tmp
16272
+ return _tmp
16273
+ end
16274
+
16275
+ # TableAlign2 = "|" @Sp TableAlign
16276
+ def _TableAlign2
16277
+
16278
+ _save = self.pos
16279
+ while true # sequence
16280
+ _tmp = match_string("|")
16281
+ unless _tmp
16282
+ self.pos = _save
16283
+ break
16284
+ end
16285
+ _tmp = _Sp()
16286
+ unless _tmp
16287
+ self.pos = _save
16288
+ break
16289
+ end
16290
+ _tmp = apply(:_TableAlign)
16291
+ unless _tmp
16292
+ self.pos = _save
16293
+ end
16294
+ break
16295
+ end # end sequence
16296
+
16297
+ set_failed_rule :_TableAlign2 unless _tmp
16298
+ return _tmp
16299
+ end
16300
+
16301
+ # TableAlign = < /:?-+:?/ > @Sp { text.start_with?(":") ? (text.end_with?(":") ? :center : :left) : (text.end_with?(":") ? :right : nil) }
16302
+ def _TableAlign
16303
+
16304
+ _save = self.pos
16305
+ while true # sequence
16306
+ _text_start = self.pos
16307
+ _tmp = scan(/\G(?-mix::?-+:?)/)
16221
16308
  if _tmp
16222
16309
  text = get_text(_text_start)
16223
16310
  end
@@ -16225,8 +16312,15 @@ class RDoc::Markdown
16225
16312
  self.pos = _save
16226
16313
  break
16227
16314
  end
16228
- @result = begin; text.start_with?(":") ? :left :
16229
- text.end_with?(":") ? :right : nil
16315
+ _tmp = _Sp()
16316
+ unless _tmp
16317
+ self.pos = _save
16318
+ break
16319
+ end
16320
+ @result = begin;
16321
+ text.start_with?(":") ?
16322
+ (text.end_with?(":") ? :center : :left) :
16323
+ (text.end_with?(":") ? :right : nil)
16230
16324
  ; end
16231
16325
  _tmp = true
16232
16326
  unless _tmp
@@ -16235,7 +16329,7 @@ class RDoc::Markdown
16235
16329
  break
16236
16330
  end # end sequence
16237
16331
 
16238
- set_failed_rule :_TableColumn unless _tmp
16332
+ set_failed_rule :_TableAlign unless _tmp
16239
16333
  return _tmp
16240
16334
  end
16241
16335
 
@@ -16661,7 +16755,7 @@ class RDoc::Markdown
16661
16755
  Rules[:_OptionallyIndentedLine] = rule_info("OptionallyIndentedLine", "Indent? Line")
16662
16756
  Rules[:_StartList] = rule_info("StartList", "&. { [] }")
16663
16757
  Rules[:_Line] = rule_info("Line", "@RawLine:a { a }")
16664
- Rules[:_RawLine] = rule_info("RawLine", "(< (!\"\\r\" !\"\\n\" .)* @Newline > | < .+ > @Eof) { text }")
16758
+ Rules[:_RawLine] = rule_info("RawLine", "(< /[^\\r\\n]*/ @Newline > | < .+ > @Eof) { text }")
16665
16759
  Rules[:_SkipBlock] = rule_info("SkipBlock", "(HtmlBlock | (!\"\#\" !SetextBottom1 !SetextBottom2 !@BlankLine @RawLine)+ @BlankLine* | @BlankLine+ | @RawLine)")
16666
16760
  Rules[:_ExtendedSpecialChar] = rule_info("ExtendedSpecialChar", "&{ notes? } \"^\"")
16667
16761
  Rules[:_NoteReference] = rule_info("NoteReference", "&{ notes? } RawNoteReference:ref { note_for ref }")
@@ -16669,13 +16763,16 @@ class RDoc::Markdown
16669
16763
  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
16764
  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
16765
  Rules[:_Notes] = rule_info("Notes", "(Note | SkipBlock)*")
16672
- Rules[:_RawNoteBlock] = rule_info("RawNoteBlock", "@StartList:a (!@BlankLine OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }")
16766
+ Rules[:_RawNoteBlock] = rule_info("RawNoteBlock", "@StartList:a (!@BlankLine !RawNoteReference OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }")
16673
16767
  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 }")
16768
+ Rules[:_Table] = rule_info("Table", "&{ github? } TableHead:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }")
16769
+ Rules[:_TableHead] = rule_info("TableHead", "TableItem2+:items \"|\"? @Newline { items }")
16770
+ Rules[:_TableRow] = rule_info("TableRow", "((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) \"|\"? @Newline { row }")
16771
+ Rules[:_TableItem2] = rule_info("TableItem2", "\"|\" TableItem")
16772
+ Rules[:_TableItem] = rule_info("TableItem", "< /(?:\\\\.|[^|\\n])+/ > { text.strip.gsub(/\\\\(.)/, '\\1') }")
16773
+ Rules[:_TableLine] = rule_info("TableLine", "((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) \"|\"? @Newline { line }")
16774
+ Rules[:_TableAlign2] = rule_info("TableAlign2", "\"|\" @Sp TableAlign")
16775
+ Rules[:_TableAlign] = rule_info("TableAlign", "< /:?-+:?/ > @Sp { text.start_with?(\":\") ? (text.end_with?(\":\") ? :center : :left) : (text.end_with?(\":\") ? :right : nil) }")
16679
16776
  Rules[:_DefinitionList] = rule_info("DefinitionList", "&{ definition_lists? } DefinitionListItem+:list { RDoc::Markup::List.new :NOTE, *list.flatten }")
16680
16777
  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
16778
  Rules[:_DefinitionListLabel] = rule_info("DefinitionListLabel", "StrChunk:label @Sp @Newline { label }")