rdoc 6.13.0 → 6.17.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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/History.rdoc +1 -1
  3. data/README.md +112 -0
  4. data/RI.md +1 -1
  5. data/lib/rdoc/code_object/any_method.rb +4 -4
  6. data/lib/rdoc/code_object/attr.rb +3 -3
  7. data/lib/rdoc/code_object/class_module.rb +18 -16
  8. data/lib/rdoc/code_object/constant.rb +5 -5
  9. data/lib/rdoc/code_object/context/section.rb +8 -7
  10. data/lib/rdoc/code_object/context.rb +19 -19
  11. data/lib/rdoc/code_object/method_attr.rb +7 -6
  12. data/lib/rdoc/code_object/mixin.rb +3 -3
  13. data/lib/rdoc/code_object/normal_class.rb +1 -1
  14. data/lib/rdoc/code_object/normal_module.rb +1 -1
  15. data/lib/rdoc/code_object/single_class.rb +1 -1
  16. data/lib/rdoc/code_object/top_level.rb +28 -33
  17. data/lib/rdoc/code_object.rb +3 -3
  18. data/lib/rdoc/comment.rb +196 -14
  19. data/lib/rdoc/cross_reference.rb +4 -4
  20. data/lib/rdoc/encoding.rb +4 -4
  21. data/lib/rdoc/erb_partial.rb +1 -1
  22. data/lib/rdoc/erbio.rb +2 -2
  23. data/lib/rdoc/generator/aliki.rb +42 -0
  24. data/lib/rdoc/generator/darkfish.rb +20 -16
  25. data/lib/rdoc/generator/json_index.rb +3 -3
  26. data/lib/rdoc/generator/markup.rb +12 -0
  27. data/lib/rdoc/generator/pot/message_extractor.rb +4 -4
  28. data/lib/rdoc/generator/pot/po.rb +1 -1
  29. data/lib/rdoc/generator/pot/po_entry.rb +7 -7
  30. data/lib/rdoc/generator/pot.rb +1 -1
  31. data/lib/rdoc/generator/ri.rb +1 -1
  32. data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +8 -0
  33. data/lib/rdoc/generator/template/aliki/_footer.rhtml +23 -0
  34. data/lib/rdoc/generator/template/aliki/_head.rhtml +158 -0
  35. data/lib/rdoc/generator/template/aliki/_header.rhtml +56 -0
  36. data/lib/rdoc/generator/template/aliki/_icons.rhtml +208 -0
  37. data/lib/rdoc/generator/template/aliki/_sidebar_ancestors.rhtml +16 -0
  38. data/lib/rdoc/generator/template/aliki/_sidebar_classes.rhtml +15 -0
  39. data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +25 -0
  40. data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +25 -0
  41. data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +16 -0
  42. data/lib/rdoc/generator/template/aliki/_sidebar_methods.rhtml +41 -0
  43. data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +67 -0
  44. data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +15 -0
  45. data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +21 -0
  46. data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +3 -0
  47. data/lib/rdoc/generator/template/aliki/class.rhtml +220 -0
  48. data/lib/rdoc/generator/template/aliki/css/rdoc.css +1737 -0
  49. data/lib/rdoc/generator/template/aliki/index.rhtml +22 -0
  50. data/lib/rdoc/generator/template/aliki/js/aliki.js +483 -0
  51. data/lib/rdoc/generator/template/aliki/js/c_highlighter.js +299 -0
  52. data/lib/rdoc/generator/template/aliki/js/search.js +120 -0
  53. data/lib/rdoc/generator/template/aliki/js/theme-toggle.js +112 -0
  54. data/lib/rdoc/generator/template/aliki/page.rhtml +18 -0
  55. data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +14 -0
  56. data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +65 -0
  57. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +3 -3
  58. data/lib/rdoc/generator/template/darkfish/_head.rhtml +16 -16
  59. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +8 -8
  60. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +8 -8
  61. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +7 -6
  62. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +6 -6
  63. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +19 -19
  64. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +2 -2
  65. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +1 -0
  66. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +3 -3
  67. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +14 -14
  68. data/lib/rdoc/generator/template/darkfish/class.rhtml +62 -60
  69. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +2 -0
  70. data/lib/rdoc/generator/template/darkfish/index.rhtml +4 -3
  71. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +21 -1
  72. data/lib/rdoc/generator/template/darkfish/js/search.js +11 -1
  73. data/lib/rdoc/generator/template/darkfish/page.rhtml +2 -1
  74. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +2 -1
  75. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +19 -19
  76. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +19 -17
  77. data/lib/rdoc/generator/template/json_index/js/searcher.js +48 -6
  78. data/lib/rdoc/generator.rb +1 -0
  79. data/lib/rdoc/markdown.kpeg +72 -18
  80. data/lib/rdoc/markdown.rb +411 -547
  81. data/lib/rdoc/markup/attribute_manager.rb +5 -5
  82. data/lib/rdoc/markup/attributes.rb +3 -3
  83. data/lib/rdoc/markup/blank_line.rb +2 -2
  84. data/lib/rdoc/markup/block_quote.rb +1 -1
  85. data/lib/rdoc/markup/document.rb +8 -8
  86. data/lib/rdoc/markup/formatter.rb +12 -12
  87. data/lib/rdoc/markup/hard_break.rb +3 -3
  88. data/lib/rdoc/markup/heading.rb +4 -4
  89. data/lib/rdoc/markup/include.rb +3 -3
  90. data/lib/rdoc/markup/indented_paragraph.rb +3 -3
  91. data/lib/rdoc/markup/list.rb +4 -4
  92. data/lib/rdoc/markup/list_item.rb +4 -4
  93. data/lib/rdoc/markup/paragraph.rb +2 -2
  94. data/lib/rdoc/markup/parser.rb +11 -11
  95. data/lib/rdoc/markup/pre_process.rb +39 -15
  96. data/lib/rdoc/markup/raw.rb +5 -5
  97. data/lib/rdoc/markup/rule.rb +2 -2
  98. data/lib/rdoc/markup/table.rb +4 -4
  99. data/lib/rdoc/markup/to_ansi.rb +7 -3
  100. data/lib/rdoc/markup/to_bs.rb +10 -6
  101. data/lib/rdoc/markup/to_html.rb +182 -30
  102. data/lib/rdoc/markup/to_html_crossref.rb +58 -28
  103. data/lib/rdoc/markup/to_html_snippet.rb +17 -17
  104. data/lib/rdoc/markup/to_joined_paragraph.rb +1 -1
  105. data/lib/rdoc/markup/to_label.rb +6 -5
  106. data/lib/rdoc/markup/to_markdown.rb +12 -12
  107. data/lib/rdoc/markup/to_rdoc.rb +40 -31
  108. data/lib/rdoc/markup/to_table_of_contents.rb +3 -3
  109. data/lib/rdoc/markup/to_test.rb +1 -1
  110. data/lib/rdoc/markup/to_tt_only.rb +8 -8
  111. data/lib/rdoc/markup/verbatim.rb +3 -3
  112. data/lib/rdoc/markup.rb +3 -3
  113. data/lib/rdoc/options.rb +53 -23
  114. data/lib/rdoc/parser/c.rb +31 -62
  115. data/lib/rdoc/parser/changelog.rb +9 -9
  116. data/lib/rdoc/parser/prism_ruby.rb +122 -114
  117. data/lib/rdoc/parser/ruby.rb +51 -51
  118. data/lib/rdoc/parser/ruby_tools.rb +5 -7
  119. data/lib/rdoc/parser/simple.rb +5 -22
  120. data/lib/rdoc/parser.rb +8 -8
  121. data/lib/rdoc/rd/inline.rb +4 -4
  122. data/lib/rdoc/rd.rb +1 -1
  123. data/lib/rdoc/rdoc.rb +9 -8
  124. data/lib/rdoc/ri/driver.rb +49 -49
  125. data/lib/rdoc/ri/paths.rb +2 -2
  126. data/lib/rdoc/ri/task.rb +3 -3
  127. data/lib/rdoc/rubygems_hook.rb +14 -11
  128. data/lib/rdoc/servlet.rb +15 -15
  129. data/lib/rdoc/stats/normal.rb +1 -1
  130. data/lib/rdoc/stats/quiet.rb +1 -1
  131. data/lib/rdoc/stats/verbose.rb +3 -3
  132. data/lib/rdoc/stats.rb +12 -12
  133. data/lib/rdoc/store.rb +32 -32
  134. data/lib/rdoc/task.rb +6 -6
  135. data/lib/rdoc/text.rb +11 -11
  136. data/lib/rdoc/token_stream.rb +14 -2
  137. data/lib/rdoc/tom_doc.rb +8 -8
  138. data/lib/rdoc/version.rb +1 -1
  139. data/man/ri.1 +2 -0
  140. data/rdoc.gemspec +72 -0
  141. metadata +61 -6
  142. data/README.rdoc +0 -142
@@ -20,46 +20,46 @@
20
20
  <h1>Local RDoc Documentation</h1>
21
21
 
22
22
  <p>Here you can browse local documentation from the ruby standard library and
23
- your installed gems.
23
+ your installed gems.</p>
24
24
 
25
- <%- extra_dirs = installed.select { |_, _, _, type,| type == :extra } -%>
26
- <%- unless extra_dirs.empty? -%>
25
+ <%- extra_dirs = installed.select { |_, _, _, type,| type == :extra } %>
26
+ <%- unless extra_dirs.empty? %>
27
27
  <h2>Extra Documentation Directories</h2>
28
28
 
29
29
  <p>The following additional documentation directories are available:</p>
30
30
 
31
31
  <ol>
32
- <%- extra_dirs.each do |name, href, exists, _, path| -%>
32
+ <%- extra_dirs.each do |name, href, exists, _, path| %>
33
33
  <li>
34
- <%- if exists -%>
34
+ <%- if exists %>
35
35
  <a href="<%= href %>"><%= h name %></a> (<%= h path %>)
36
- <%- else -%>
36
+ <%- else %>
37
37
  <%= h name %> (<%= h path %>; <i>not available</i>)
38
- <%- end -%>
38
+ <%- end %>
39
39
  </li>
40
- <%- end -%>
40
+ <%- end %>
41
41
  </ol>
42
- <%- end -%>
42
+ <%- end %>
43
43
 
44
- <%- gems = installed.select { |_, _, _, type,| type == :gem } -%>
45
- <%- missing = gems.reject { |_, _, exists,| exists } -%>
46
- <%- unless missing.empty? then -%>
44
+ <%- gems = installed.select { |_, _, _, type,| type == :gem } %>
45
+ <%- missing = gems.reject { |_, _, exists,| exists } %>
46
+ <%- unless missing.empty? %>
47
47
  <h2>Missing Gem Documentation</h2>
48
48
 
49
49
  <p>You are missing documentation for some of your installed gems.
50
50
  You can install missing documentation for gems by running
51
51
  <kbd>gem rdoc --all</kbd>. After installing the missing documentation you
52
52
  only need to reload this page. The newly created documentation will
53
- automatically appear.
53
+ automatically appear.</p>
54
54
 
55
55
  <p>You can also install documentation for a specific gem by running one of
56
- the following commands.
56
+ the following commands.</p>
57
57
 
58
58
  <ul>
59
- <%- names = missing.map { |name,| name.sub(/-([^-]*)$/, '') }.uniq -%>
60
- <%- names.each do |name| -%>
61
- <li><kbd>gem rdoc <%=h name %></kbd>
62
- <%- end -%>
59
+ <%- missing.map { |name,| name.sub(/-([^-]*)$/, '') }.uniq.each do |name| %>
60
+ <li><kbd>gem rdoc <%= h name %></kbd></li>
61
+ <%- end %>
63
62
  </ul>
64
- <%- end -%>
63
+ <%- end %>
65
64
  </main>
65
+ </body>
@@ -13,11 +13,11 @@
13
13
  <main role="main">
14
14
  <h1 class="class"><%= h @title %></h1>
15
15
 
16
- <%- simple_files = @files.select { |f| f.text? } -%>
17
- <%- unless simple_files.empty? then -%>
16
+ <%- simple_files = @files.select { |f| f.text? } %>
17
+ <%- unless simple_files.empty? then %>
18
18
  <h2 id="pages">Pages</h2>
19
19
  <ul>
20
- <%- simple_files.sort.each do |file| -%>
20
+ <%- simple_files.sort.each do |file| %>
21
21
  <li class="file">
22
22
  <a href="<%= h file.path %>"><%= h file.page_name %></a>
23
23
  <%
@@ -25,19 +25,19 @@
25
25
  table = file.parse(file.comment).table_of_contents
26
26
  unless table.empty? then %>
27
27
  <ul>
28
- <%- table.each do |heading| -%>
29
- <li><a href="<%= h file.path %>#<%= heading.aref %>"><%= heading.plain_html %></a>
30
- <%- end -%>
28
+ <%- table.each do |heading| %>
29
+ <li><a href="<%= h file.path %>#<%= heading.aref %>"><%= heading.plain_html %></a></li>
30
+ <%- end %>
31
31
  </ul>
32
- <%- end -%>
32
+ <%- end %>
33
33
  </li>
34
- <%- end -%>
34
+ <%- end %>
35
35
  </ul>
36
- <%- end -%>
36
+ <%- end %>
37
37
 
38
38
  <h2 id="classes">Classes and Modules</h2>
39
39
  <ul>
40
- <%- @modsort.each do |klass| -%>
40
+ <%- @modsort.each do |klass| %>
41
41
  <li class="<%= klass.type %>">
42
42
  <a href="<%= klass.path %>"><%= klass.full_name %></a>
43
43
  <%- table = []
@@ -46,14 +46,14 @@
46
46
 
47
47
  unless table.empty? then %>
48
48
  <ul>
49
- <%- table.each do |item| -%>
50
- <%- label = item.respond_to?(:label) ? item.label(klass) : item.aref -%>
51
- <li><a href="<%= klass.path %>#<%= label %>"><%= item.plain_html %></a>
52
- <%- end -%>
49
+ <%- table.each do |item| %>
50
+ <%- label = item.respond_to?(:label) ? item.label(klass) : item.aref %>
51
+ <li><a href="<%= klass.path %>#<%= label %>"><%= item.plain_html %></a></li>
52
+ <%- end %>
53
53
  </ul>
54
- <%- end -%>
54
+ <%- end %>
55
55
  </li>
56
- <%- end -%>
56
+ <%- end %>
57
57
  </ul>
58
58
 
59
59
  <h2 id="methods">Methods</h2>
@@ -65,6 +65,8 @@
65
65
  <a href="<%= method.path %>"><%= h method.pretty_name %></a>
66
66
  &mdash;
67
67
  <span class="container"><%= method.parent.full_name %></span>
68
- <%- end -%>
68
+ </li>
69
+ <%- end %>
69
70
  </ul>
70
71
  </main>
72
+ </body>
@@ -29,7 +29,7 @@ Searcher.prototype = new function() {
29
29
 
30
30
  var results =
31
31
  performSearch(_this.data, regexps, queries, highlighters, state);
32
- var hasMore = (state.limit > 0 && state.pass < 4);
32
+ var hasMore = (state.limit > 0 && state.pass < 6);
33
33
 
34
34
  triggerResults.call(_this, results, !hasMore);
35
35
  if (hasMore) {
@@ -57,8 +57,17 @@ Searcher.prototype = new function() {
57
57
  }
58
58
 
59
59
  function buildRegexps(queries) {
60
+ // A small minority of older browsers don't have RegExp.escape
61
+ // but it's not worth including a complex polyfill.
62
+ var escape = RegExp.escape || function(s) { return s };
63
+
60
64
  return queries.map(function(query) {
61
- return new RegExp(query.replace(/(.)/g, '([$1])([^$1]*?)'), 'i');
65
+ var pattern = [];
66
+ for (var i = 0; i < query.length; i++) {
67
+ var char = escape(query[i]);
68
+ pattern.push('([' + char + '])([^' + char + ']*?)');
69
+ }
70
+ return new RegExp(pattern.join(''), 'i');
62
71
  });
63
72
  }
64
73
 
@@ -80,6 +89,30 @@ Searcher.prototype = new function() {
80
89
 
81
90
  /* ----- Mathchers ------ */
82
91
 
92
+ /*
93
+ * This record matches if both the index and longIndex exactly equal queries[0]
94
+ * and the record matches all of the regexps. This ensures top-level exact matches
95
+ * like "String" are prioritized over nested classes like "Gem::Module::String".
96
+ */
97
+ function matchPassExact(index, longIndex, queries) {
98
+ return index == queries[0] && longIndex == queries[0];
99
+ }
100
+
101
+ /*
102
+ * This record matches if the index without "()" exactly equals queries[0].
103
+ * This prioritizes methods like "attribute()" when searching for "attribute".
104
+ */
105
+ function matchPassExactMethod(index, longIndex, queries, regexps) {
106
+ var indexWithoutParens = index.replace(/\(\)$/, '');
107
+ if (indexWithoutParens != queries[0]) return false;
108
+ if (index === indexWithoutParens) return false; // Not a method (no parens to remove)
109
+ for (var i=1, l = regexps.length; i < l; i++) {
110
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
111
+ return false;
112
+ };
113
+ return true;
114
+ }
115
+
83
116
  /*
84
117
  * This record matches if the index starts with queries[0] and the record
85
118
  * matches all of the regexps
@@ -187,17 +220,26 @@ Searcher.prototype = new function() {
187
220
  var togo = CHUNK_SIZE;
188
221
  var matchFunc, hltFunc;
189
222
 
190
- while (state.pass < 4 && state.limit > 0 && togo > 0) {
223
+ var isLowercaseQuery = queries[0] === queries[0].toLowerCase();
224
+
225
+ while (state.pass < 6 && state.limit > 0 && togo > 0) {
226
+ // When query is lowercase, prioritize methods over classes
191
227
  if (state.pass == 0) {
192
- matchFunc = matchPassBeginning;
228
+ matchFunc = isLowercaseQuery ? matchPassExactMethod : matchPassExact;
193
229
  hltFunc = highlightQuery;
194
230
  } else if (state.pass == 1) {
195
- matchFunc = matchPassLongIndex;
231
+ matchFunc = isLowercaseQuery ? matchPassExact : matchPassExactMethod;
196
232
  hltFunc = highlightQuery;
197
233
  } else if (state.pass == 2) {
198
- matchFunc = matchPassContains;
234
+ matchFunc = matchPassBeginning;
199
235
  hltFunc = highlightQuery;
200
236
  } else if (state.pass == 3) {
237
+ matchFunc = matchPassLongIndex;
238
+ hltFunc = highlightQuery;
239
+ } else if (state.pass == 4) {
240
+ matchFunc = matchPassContains;
241
+ hltFunc = highlightQuery;
242
+ } else if (state.pass == 5) {
201
243
  matchFunc = matchPassRegexp;
202
244
  hltFunc = highlightRegexp;
203
245
  }
@@ -43,6 +43,7 @@ module RDoc::Generator
43
43
 
44
44
  autoload :Markup, "#{__dir__}/generator/markup"
45
45
 
46
+ autoload :Aliki, "#{__dir__}/generator/aliki"
46
47
  autoload :Darkfish, "#{__dir__}/generator/darkfish"
47
48
  autoload :JsonIndex, "#{__dir__}/generator/json_index"
48
49
  autoload :RI, "#{__dir__}/generator/ri"
@@ -496,6 +496,57 @@
496
496
  "<s>#{text}</s>"
497
497
  end
498
498
  end
499
+
500
+ ##
501
+ # Wraps `text` in code markup for rdoc inline formatting
502
+
503
+ def code text
504
+ # trim even spaces
505
+ text = $2 while /\A( +|\t+)(.*)\1\z/ =~ text
506
+ # escape unescaped backslash at the end
507
+ backslash_at_end = "\\" if /(?<!\\)(?:\\\\)*\\\z/.match?(text)
508
+ "<code>#{text}#{backslash_at_end}</code>"
509
+ end
510
+
511
+ ##
512
+ # Parses inline markdown in table cells
513
+
514
+ def parse_table_cells(table)
515
+ # Parse header cells
516
+ table.header = table.header.map { |cell| parse_cell_inline(cell) }
517
+
518
+ # Parse body cells
519
+ table.body = table.body.map do |row|
520
+ row.map { |cell| parse_cell_inline(cell) }
521
+ end
522
+
523
+ table
524
+ end
525
+
526
+ ##
527
+ # Parses inline markdown in a single table cell
528
+
529
+ def parse_cell_inline(text)
530
+ return text if text.nil? || text.empty?
531
+
532
+ # Create a new parser instance for the cell
533
+ cell_parser = RDoc::Markdown.new(@extensions, @debug)
534
+
535
+ # Parse the cell content
536
+ doc = cell_parser.parse(text)
537
+
538
+ # Extract the parsed content
539
+ if doc && doc.parts && !doc.parts.empty?
540
+ para = doc.parts.first
541
+ if para.is_a?(RDoc::Markup::Paragraph)
542
+ para.parts.join
543
+ else
544
+ text
545
+ end
546
+ else
547
+ text
548
+ end
549
+ end
499
550
  }
500
551
 
501
552
  root = Doc
@@ -1064,32 +1115,32 @@ Ticks3 = "```" !"`"
1064
1115
  Ticks4 = "````" !"`"
1065
1116
  Ticks5 = "`````" !"`"
1066
1117
 
1067
- Code = ( Ticks1 @Sp < (
1118
+ Code = ( Ticks1 < (
1068
1119
  ( !"`" Nonspacechar )+ | !Ticks1 /`+/ |
1069
- !( @Sp Ticks1 ) ( @Spacechar | @Newline !@BlankLine )
1070
- )+ > @Sp Ticks1 |
1071
- Ticks2 @Sp < (
1120
+ !Ticks1 ( @Spacechar | @Newline !@BlankLine )
1121
+ )+ > Ticks1 |
1122
+ Ticks2 < (
1072
1123
  ( !"`" Nonspacechar )+ |
1073
1124
  !Ticks2 /`+/ |
1074
- !( @Sp Ticks2 ) ( @Spacechar | @Newline !@BlankLine )
1075
- )+ > @Sp Ticks2 |
1076
- Ticks3 @Sp < (
1125
+ !Ticks2 ( @Spacechar | @Newline !@BlankLine )
1126
+ )+ > Ticks2 |
1127
+ Ticks3 < (
1077
1128
  ( !"`" Nonspacechar )+ |
1078
1129
  !Ticks3 /`+/ |
1079
- !( @Sp Ticks3 ) ( @Spacechar | @Newline !@BlankLine )
1080
- )+ > @Sp Ticks3 |
1081
- Ticks4 @Sp < (
1130
+ !Ticks3 ( @Spacechar | @Newline !@BlankLine )
1131
+ )+ > Ticks3 |
1132
+ Ticks4 < (
1082
1133
  ( !"`" Nonspacechar )+ |
1083
1134
  !Ticks4 /`+/ |
1084
- !( @Sp Ticks4 ) ( @Spacechar | @Newline !@BlankLine )
1085
- )+ > @Sp Ticks4 |
1086
- Ticks5 @Sp < (
1135
+ !Ticks4 ( @Spacechar | @Newline !@BlankLine )
1136
+ )+ > Ticks4 |
1137
+ Ticks5 < (
1087
1138
  ( !"`" Nonspacechar )+ |
1088
1139
  !Ticks5 /`+/ |
1089
- !( @Sp Ticks5 ) ( @Spacechar | @Newline !@BlankLine )
1090
- )+ > @Sp Ticks5
1140
+ !Ticks5 ( @Spacechar | @Newline !@BlankLine )
1141
+ )+ > Ticks5
1091
1142
  )
1092
- { "<code>#{text}</code>" }
1143
+ { code text }
1093
1144
 
1094
1145
  RawHtml = < (HtmlComment | HtmlBlockScript | HtmlTag) >
1095
1146
  { if html? then text else '' end }
@@ -1201,7 +1252,10 @@ CodeFence = &{ github? }
1201
1252
 
1202
1253
  Table = &{ github? }
1203
1254
  TableHead:header TableLine:line TableRow+:body
1204
- { table = RDoc::Markup::Table.new(header, line, body) }
1255
+ {
1256
+ table = RDoc::Markup::Table.new(header, line, body)
1257
+ parse_table_cells(table)
1258
+ }
1205
1259
 
1206
1260
  TableHead = TableItem2+:items "|"? @Newline
1207
1261
  { items }
@@ -1210,7 +1264,7 @@ TableRow = ( ( TableItem:item1 TableItem2*:items { [item1, *items] } ):row | Tab
1210
1264
  { row }
1211
1265
  TableItem2 = "|" TableItem
1212
1266
  TableItem = < /(?:\\.|[^|\n])+/ >
1213
- { text.strip.gsub(/\\(.)/, '\1') }
1267
+ { text.strip.gsub(/\\([|])/, '\1') }
1214
1268
 
1215
1269
  TableLine = ( ( TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] } ):line | TableAlign2+:line ) "|"? @Newline
1216
1270
  { line }