rdoc 6.7.0 → 6.13.1

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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/ExampleMarkdown.md +2 -0
  3. data/ExampleRDoc.rdoc +2 -0
  4. data/History.rdoc +64 -62
  5. data/LICENSE.rdoc +2 -0
  6. data/README.rdoc +13 -0
  7. data/RI.md +842 -0
  8. data/TODO.rdoc +8 -7
  9. data/lib/rdoc/{alias.rb → code_object/alias.rb} +3 -10
  10. data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +7 -12
  11. data/lib/rdoc/{attr.rb → code_object/attr.rb} +4 -7
  12. data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +107 -20
  13. data/lib/rdoc/{constant.rb → code_object/constant.rb} +1 -1
  14. data/lib/rdoc/{context → code_object/context}/section.rb +10 -68
  15. data/lib/rdoc/{context.rb → code_object/context.rb} +4 -46
  16. data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +19 -27
  17. data/lib/rdoc/{require.rb → code_object/require.rb} +1 -1
  18. data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +10 -28
  19. data/lib/rdoc/code_object.rb +6 -32
  20. data/lib/rdoc/comment.rb +12 -5
  21. data/lib/rdoc/generator/darkfish.rb +121 -95
  22. data/lib/rdoc/generator/json_index.rb +1 -17
  23. data/lib/rdoc/generator/markup.rb +2 -2
  24. data/lib/rdoc/generator/pot/message_extractor.rb +3 -3
  25. data/lib/rdoc/generator/pot/po_entry.rb +1 -1
  26. data/lib/rdoc/generator/pot.rb +0 -5
  27. data/lib/rdoc/generator/template/darkfish/_head.rhtml +23 -0
  28. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -29
  29. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +1 -1
  30. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +1 -1
  31. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +20 -11
  32. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +3 -8
  33. data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  34. data/lib/rdoc/generator/template/darkfish/class.rhtml +84 -43
  35. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +391 -397
  36. data/lib/rdoc/generator/template/darkfish/index.rhtml +11 -10
  37. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +24 -1
  38. data/lib/rdoc/generator/template/darkfish/page.rhtml +5 -5
  39. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +10 -8
  40. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +5 -2
  41. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +11 -0
  42. data/lib/rdoc/markdown.kpeg +8 -6
  43. data/lib/rdoc/markdown.rb +55 -32
  44. data/lib/rdoc/markup/attribute_manager.rb +2 -2
  45. data/lib/rdoc/markup/formatter.rb +19 -12
  46. data/lib/rdoc/markup/heading.rb +7 -1
  47. data/lib/rdoc/markup/pre_process.rb +26 -6
  48. data/lib/rdoc/markup/to_bs.rb +1 -1
  49. data/lib/rdoc/markup/to_html.rb +7 -2
  50. data/lib/rdoc/markup/to_html_crossref.rb +63 -12
  51. data/lib/rdoc/markup/to_rdoc.rb +5 -5
  52. data/lib/rdoc/markup.rb +18 -13
  53. data/lib/rdoc/options.rb +90 -12
  54. data/lib/rdoc/parser/c.rb +30 -9
  55. data/lib/rdoc/parser/changelog.rb +5 -4
  56. data/lib/rdoc/parser/prism_ruby.rb +1092 -0
  57. data/lib/rdoc/parser/ripper_state_lex.rb +7 -305
  58. data/lib/rdoc/parser/ruby.rb +23 -17
  59. data/lib/rdoc/parser/simple.rb +1 -1
  60. data/lib/rdoc/parser.rb +5 -4
  61. data/lib/rdoc/rd/block_parser.rb +3 -3
  62. data/lib/rdoc/rd/inline_parser.rb +3 -3
  63. data/lib/rdoc/rdoc.rb +9 -21
  64. data/lib/rdoc/ri/driver.rb +85 -32
  65. data/lib/rdoc/rubygems_hook.rb +91 -15
  66. data/lib/rdoc/servlet.rb +8 -7
  67. data/lib/rdoc/stats.rb +2 -2
  68. data/lib/rdoc/store.rb +21 -13
  69. data/lib/rdoc/task.rb +2 -3
  70. data/lib/rdoc/text.rb +2 -2
  71. data/lib/rdoc/tom_doc.rb +1 -7
  72. data/lib/rdoc/version.rb +1 -1
  73. data/lib/rdoc.rb +22 -24
  74. data/lib/rubygems_plugin.rb +23 -0
  75. metadata +27 -28
  76. data/RI.rdoc +0 -57
  77. data/lib/rdoc/generator/template/darkfish/.document +0 -0
  78. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
  79. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
  80. data/lib/rdoc/generator/template/json_index/.document +0 -1
  81. /data/lib/rdoc/{anon_class.rb → code_object/anon_class.rb} +0 -0
  82. /data/lib/rdoc/{extend.rb → code_object/extend.rb} +0 -0
  83. /data/lib/rdoc/{ghost_method.rb → code_object/ghost_method.rb} +0 -0
  84. /data/lib/rdoc/{include.rb → code_object/include.rb} +0 -0
  85. /data/lib/rdoc/{meta_method.rb → code_object/meta_method.rb} +0 -0
  86. /data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +0 -0
  87. /data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +0 -0
  88. /data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +0 -0
  89. /data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +0 -0
@@ -1,22 +1,23 @@
1
1
  <body id="top" role="document" class="file">
2
- <nav role="navigation">
2
+ <%= render '_sidebar_toggle.rhtml' %>
3
+
4
+ <nav id="navigation" role="navigation">
3
5
  <div id="project-navigation">
4
6
  <%= render '_sidebar_navigation.rhtml' %>
5
-
6
7
  <%= render '_sidebar_search.rhtml' %>
7
8
  </div>
8
9
 
9
- <div id="project-metadata">
10
- <%= render '_sidebar_pages.rhtml' %>
11
- <%= render '_sidebar_classes.rhtml' %>
12
- </div>
10
+ <%= render '_sidebar_table_of_contents.rhtml' if defined?(current) %>
11
+ <%= render '_sidebar_pages.rhtml' %>
12
+ <%= render '_sidebar_classes.rhtml' %>
13
+
14
+ <%= render '_footer.rhtml' %>
13
15
  </nav>
14
16
 
15
17
  <main role="main">
16
- <%- if @options.main_page and
17
- main_page = @files.find { |f| f.full_name == @options.main_page } then %>
18
- <%= main_page.description %>
18
+ <%- if @main_page %>
19
+ <%= @main_page.description %>
19
20
  <%- else -%>
20
- <p>This is the API documentation for <%= h @title %>.
21
+ <p>This is the API documentation for <%= h @title %>.
21
22
  <%- end -%>
22
23
  </main>
@@ -34,7 +34,7 @@ function showSource( e ) {
34
34
  };
35
35
 
36
36
  function hookSourceViews() {
37
- document.querySelectorAll('.method-heading').forEach(function (codeObject) {
37
+ document.querySelectorAll('.method-source-toggle').forEach(function (codeObject) {
38
38
  codeObject.addEventListener('click', showSource);
39
39
  });
40
40
  };
@@ -90,8 +90,31 @@ function hookFocus() {
90
90
  });
91
91
  }
92
92
 
93
+ function hookSidebar() {
94
+ var navigation = document.querySelector('#navigation');
95
+ var navigationToggle = document.querySelector('#navigation-toggle');
96
+
97
+ navigationToggle.addEventListener('click', function() {
98
+ navigation.hidden = !navigation.hidden;
99
+ navigationToggle.ariaExpanded = navigationToggle.ariaExpanded !== 'true';
100
+ });
101
+
102
+ var isSmallViewport = window.matchMedia("(max-width: 1023px)").matches;
103
+ if (isSmallViewport) {
104
+ navigation.hidden = true;
105
+ navigationToggle.ariaExpanded = false;
106
+ document.addEventListener('click', (e) => {
107
+ if (e.target.closest('#navigation a')) {
108
+ navigation.hidden = true;
109
+ navigationToggle.ariaExpanded = false;
110
+ }
111
+ });
112
+ }
113
+ }
114
+
93
115
  document.addEventListener('DOMContentLoaded', function() {
94
116
  hookSourceViews();
95
117
  hookSearch();
96
118
  hookFocus();
119
+ hookSidebar();
97
120
  });
@@ -1,18 +1,18 @@
1
1
  <body id="top" role="document" class="file">
2
- <nav role="navigation">
2
+ <%= render '_sidebar_toggle.rhtml' %>
3
+
4
+ <nav id="navigation" role="navigation">
3
5
  <div id="project-navigation">
4
6
  <%= render '_sidebar_navigation.rhtml' %>
5
7
  <%= render '_sidebar_search.rhtml' %>
6
8
  </div>
7
9
 
8
10
  <%= render '_sidebar_table_of_contents.rhtml' %>
11
+ <%= render '_sidebar_pages.rhtml' %>
9
12
 
10
- <div id="project-metadata">
11
- <%= render '_sidebar_pages.rhtml' %>
12
- </div>
13
+ <%= render '_footer.rhtml' %>
13
14
  </nav>
14
15
 
15
16
  <main role="main" aria-label="Page <%=h file.full_name%>">
16
17
  <%= file.description %>
17
18
  </main>
18
-
@@ -1,13 +1,16 @@
1
1
  <body role="document">
2
- <nav role="navigation">
3
- <%= render '_sidebar_navigation.rhtml' %>
2
+ <%= render '_sidebar_toggle.rhtml' %>
4
3
 
5
- <%= render '_sidebar_search.rhtml' %>
6
-
7
- <div id="project-metadata">
8
- <%= render '_sidebar_pages.rhtml' %>
9
- <%= render '_sidebar_classes.rhtml' %>
4
+ <nav id="navigation" role="navigation">
5
+ <div id="project-navigation">
6
+ <%= render '_sidebar_navigation.rhtml' %>
7
+ <%= render '_sidebar_search.rhtml' %>
10
8
  </div>
9
+
10
+ <%= render '_sidebar_pages.rhtml' %>
11
+ <%= render '_sidebar_classes.rhtml' %>
12
+
13
+ <%= render '_footer.rhtml' %>
11
14
  </nav>
12
15
 
13
16
  <main role="main">
@@ -15,4 +18,3 @@
15
18
 
16
19
  <p><%= message %>
17
20
  </main>
18
-
@@ -1,5 +1,7 @@
1
1
  <body role="document">
2
- <nav role="navigation">
2
+ <%= render '_sidebar_toggle.rhtml' %>
3
+
4
+ <nav id="navigation" role="navigation">
3
5
  <div id="project-navigation">
4
6
  <div id="home-section" class="nav-section">
5
7
  <h2>
@@ -10,7 +12,8 @@
10
12
  <%= render '_sidebar_search.rhtml' %>
11
13
  </div>
12
14
 
13
- <%= render '_sidebar_installed.rhtml' %>
15
+ <%= render '_sidebar_installed.rhtml' %>
16
+ <%= render '_footer.rhtml' %>
14
17
  </nav>
15
18
 
16
19
  <main role="main">
@@ -1,4 +1,15 @@
1
1
  <body id="top" class="table-of-contents">
2
+ <%= render '_sidebar_toggle.rhtml' %>
3
+
4
+ <nav id="navigation" role="navigation">
5
+ <div id="project-navigation">
6
+ <%= render '_sidebar_navigation.rhtml' %>
7
+
8
+ <%= render '_sidebar_search.rhtml' %>
9
+ </div>
10
+
11
+ <%= render '_footer.rhtml' %>
12
+ </nav>
2
13
  <main role="main">
3
14
  <h1 class="class"><%= h @title %></h1>
4
15
 
@@ -530,7 +530,7 @@ AtxInline = !@Newline !(@Sp /#*/ @Sp @Newline) Inline
530
530
  AtxStart = < /\#{1,6}/ >
531
531
  { text.length }
532
532
 
533
- AtxHeading = AtxStart:s @Sp AtxInline+:a (@Sp /#*/ @Sp)? @Newline
533
+ AtxHeading = AtxStart:s @Spacechar+ AtxInline+:a (@Sp /#*/ @Sp)? @Newline
534
534
  { RDoc::Markup::Heading.new(s, a.join) }
535
535
 
536
536
  SetextHeading = SetextHeading1 | SetextHeading2
@@ -992,9 +992,8 @@ Strike = &{ strike? }
992
992
  "~~"
993
993
  { strike a.join }
994
994
 
995
- # TODO alt text support
996
- Image = "!" ( ExplicitLink | ReferenceLink ):a
997
- { "rdoc-image:#{a[/\[(.*)\]/, 1]}" }
995
+ Image = "!" ExplicitLinkWithLabel:a
996
+ { "rdoc-image:#{a[:link]}:#{a[:label]}" }
998
997
 
999
998
  Link = ExplicitLink | ReferenceLink | AutoLink
1000
999
 
@@ -1006,8 +1005,11 @@ ReferenceLinkDouble = Label:content < Spnl > !"[]" Label:label
1006
1005
  ReferenceLinkSingle = Label:content < (Spnl "[]")? >
1007
1006
  { link_to content, content, text }
1008
1007
 
1009
- ExplicitLink = Label:l "(" @Sp Source:s Spnl Title @Sp ")"
1010
- { "{#{l}}[#{s}]" }
1008
+ ExplicitLink = ExplicitLinkWithLabel:a
1009
+ { "{#{a[:label]}}[#{a[:link]}]" }
1010
+
1011
+ ExplicitLinkWithLabel = Label:label "(" @Sp Source:link Spnl Title @Sp ")"
1012
+ { { label: label, link: link } }
1011
1013
 
1012
1014
  Source = ( "<" < SourceContents > ">" | < SourceContents > )
1013
1015
  { text }
data/lib/rdoc/markdown.rb CHANGED
@@ -1158,7 +1158,7 @@ class RDoc::Markdown
1158
1158
  return _tmp
1159
1159
  end
1160
1160
 
1161
- # AtxHeading = AtxStart:s @Sp AtxInline+:a (@Sp /#*/ @Sp)? @Newline { RDoc::Markup::Heading.new(s, a.join) }
1161
+ # AtxHeading = AtxStart:s @Spacechar+ AtxInline+:a (@Sp /#*/ @Sp)? @Newline { RDoc::Markup::Heading.new(s, a.join) }
1162
1162
  def _AtxHeading
1163
1163
 
1164
1164
  _save = self.pos
@@ -1169,12 +1169,22 @@ class RDoc::Markdown
1169
1169
  self.pos = _save
1170
1170
  break
1171
1171
  end
1172
- _tmp = _Sp()
1172
+ _save1 = self.pos
1173
+ _tmp = _Spacechar()
1174
+ if _tmp
1175
+ while true
1176
+ _tmp = _Spacechar()
1177
+ break unless _tmp
1178
+ end
1179
+ _tmp = true
1180
+ else
1181
+ self.pos = _save1
1182
+ end
1173
1183
  unless _tmp
1174
1184
  self.pos = _save
1175
1185
  break
1176
1186
  end
1177
- _save1 = self.pos
1187
+ _save2 = self.pos
1178
1188
  _ary = []
1179
1189
  _tmp = apply(:_AtxInline)
1180
1190
  if _tmp
@@ -1187,37 +1197,37 @@ class RDoc::Markdown
1187
1197
  _tmp = true
1188
1198
  @result = _ary
1189
1199
  else
1190
- self.pos = _save1
1200
+ self.pos = _save2
1191
1201
  end
1192
1202
  a = @result
1193
1203
  unless _tmp
1194
1204
  self.pos = _save
1195
1205
  break
1196
1206
  end
1197
- _save2 = self.pos
1198
-
1199
1207
  _save3 = self.pos
1208
+
1209
+ _save4 = self.pos
1200
1210
  while true # sequence
1201
1211
  _tmp = _Sp()
1202
1212
  unless _tmp
1203
- self.pos = _save3
1213
+ self.pos = _save4
1204
1214
  break
1205
1215
  end
1206
1216
  _tmp = scan(/\G(?-mix:#*)/)
1207
1217
  unless _tmp
1208
- self.pos = _save3
1218
+ self.pos = _save4
1209
1219
  break
1210
1220
  end
1211
1221
  _tmp = _Sp()
1212
1222
  unless _tmp
1213
- self.pos = _save3
1223
+ self.pos = _save4
1214
1224
  end
1215
1225
  break
1216
1226
  end # end sequence
1217
1227
 
1218
1228
  unless _tmp
1219
1229
  _tmp = true
1220
- self.pos = _save2
1230
+ self.pos = _save3
1221
1231
  end
1222
1232
  unless _tmp
1223
1233
  self.pos = _save
@@ -10968,7 +10978,7 @@ class RDoc::Markdown
10968
10978
  return _tmp
10969
10979
  end
10970
10980
 
10971
- # Image = "!" (ExplicitLink | ReferenceLink):a { "rdoc-image:#{a[/\[(.*)\]/, 1]}" }
10981
+ # Image = "!" ExplicitLinkWithLabel:a { "rdoc-image:#{a[:link]}:#{a[:label]}" }
10972
10982
  def _Image
10973
10983
 
10974
10984
  _save = self.pos
@@ -10978,24 +10988,13 @@ class RDoc::Markdown
10978
10988
  self.pos = _save
10979
10989
  break
10980
10990
  end
10981
-
10982
- _save1 = self.pos
10983
- while true # choice
10984
- _tmp = apply(:_ExplicitLink)
10985
- break if _tmp
10986
- self.pos = _save1
10987
- _tmp = apply(:_ReferenceLink)
10988
- break if _tmp
10989
- self.pos = _save1
10990
- break
10991
- end # end choice
10992
-
10991
+ _tmp = apply(:_ExplicitLinkWithLabel)
10993
10992
  a = @result
10994
10993
  unless _tmp
10995
10994
  self.pos = _save
10996
10995
  break
10997
10996
  end
10998
- @result = begin; "rdoc-image:#{a[/\[(.*)\]/, 1]}" ; end
10997
+ @result = begin; "rdoc-image:#{a[:link]}:#{a[:label]}" ; end
10999
10998
  _tmp = true
11000
10999
  unless _tmp
11001
11000
  self.pos = _save
@@ -11143,13 +11142,36 @@ class RDoc::Markdown
11143
11142
  return _tmp
11144
11143
  end
11145
11144
 
11146
- # ExplicitLink = Label:l "(" @Sp Source:s Spnl Title @Sp ")" { "{#{l}}[#{s}]" }
11145
+ # ExplicitLink = ExplicitLinkWithLabel:a { "{#{a[:label]}}[#{a[:link]}]" }
11147
11146
  def _ExplicitLink
11148
11147
 
11148
+ _save = self.pos
11149
+ while true # sequence
11150
+ _tmp = apply(:_ExplicitLinkWithLabel)
11151
+ a = @result
11152
+ unless _tmp
11153
+ self.pos = _save
11154
+ break
11155
+ end
11156
+ @result = begin; "{#{a[:label]}}[#{a[:link]}]" ; end
11157
+ _tmp = true
11158
+ unless _tmp
11159
+ self.pos = _save
11160
+ end
11161
+ break
11162
+ end # end sequence
11163
+
11164
+ set_failed_rule :_ExplicitLink unless _tmp
11165
+ return _tmp
11166
+ end
11167
+
11168
+ # ExplicitLinkWithLabel = Label:label "(" @Sp Source:link Spnl Title @Sp ")" { { label: label, link: link } }
11169
+ def _ExplicitLinkWithLabel
11170
+
11149
11171
  _save = self.pos
11150
11172
  while true # sequence
11151
11173
  _tmp = apply(:_Label)
11152
- l = @result
11174
+ label = @result
11153
11175
  unless _tmp
11154
11176
  self.pos = _save
11155
11177
  break
@@ -11165,7 +11187,7 @@ class RDoc::Markdown
11165
11187
  break
11166
11188
  end
11167
11189
  _tmp = apply(:_Source)
11168
- s = @result
11190
+ link = @result
11169
11191
  unless _tmp
11170
11192
  self.pos = _save
11171
11193
  break
@@ -11190,7 +11212,7 @@ class RDoc::Markdown
11190
11212
  self.pos = _save
11191
11213
  break
11192
11214
  end
11193
- @result = begin; "{#{l}}[#{s}]" ; end
11215
+ @result = begin; { label: label, link: link } ; end
11194
11216
  _tmp = true
11195
11217
  unless _tmp
11196
11218
  self.pos = _save
@@ -11198,7 +11220,7 @@ class RDoc::Markdown
11198
11220
  break
11199
11221
  end # end sequence
11200
11222
 
11201
- set_failed_rule :_ExplicitLink unless _tmp
11223
+ set_failed_rule :_ExplicitLinkWithLabel unless _tmp
11202
11224
  return _tmp
11203
11225
  end
11204
11226
 
@@ -16539,7 +16561,7 @@ class RDoc::Markdown
16539
16561
  Rules[:_Plain] = rule_info("Plain", "Inlines:a { paragraph a }")
16540
16562
  Rules[:_AtxInline] = rule_info("AtxInline", "!@Newline !(@Sp /\#*/ @Sp @Newline) Inline")
16541
16563
  Rules[:_AtxStart] = rule_info("AtxStart", "< /\\\#{1,6}/ > { text.length }")
16542
- Rules[:_AtxHeading] = rule_info("AtxHeading", "AtxStart:s @Sp AtxInline+:a (@Sp /\#*/ @Sp)? @Newline { RDoc::Markup::Heading.new(s, a.join) }")
16564
+ Rules[:_AtxHeading] = rule_info("AtxHeading", "AtxStart:s @Spacechar+ AtxInline+:a (@Sp /\#*/ @Sp)? @Newline { RDoc::Markup::Heading.new(s, a.join) }")
16543
16565
  Rules[:_SetextHeading] = rule_info("SetextHeading", "(SetextHeading1 | SetextHeading2)")
16544
16566
  Rules[:_SetextBottom1] = rule_info("SetextBottom1", "/={1,}/ @Newline")
16545
16567
  Rules[:_SetextBottom2] = rule_info("SetextBottom2", "/-{1,}/ @Newline")
@@ -16701,12 +16723,13 @@ class RDoc::Markdown
16701
16723
  Rules[:_StrongStar] = rule_info("StrongStar", "\"**\" !@Whitespace @StartList:a (!\"**\" Inline:b { a << b })+ \"**\" { strong a.join }")
16702
16724
  Rules[:_StrongUl] = rule_info("StrongUl", "\"__\" !@Whitespace @StartList:a (!\"__\" Inline:b { a << b })+ \"__\" { strong a.join }")
16703
16725
  Rules[:_Strike] = rule_info("Strike", "&{ strike? } \"~~\" !@Whitespace @StartList:a (!\"~~\" Inline:b { a << b })+ \"~~\" { strike a.join }")
16704
- Rules[:_Image] = rule_info("Image", "\"!\" (ExplicitLink | ReferenceLink):a { \"rdoc-image:\#{a[/\\[(.*)\\]/, 1]}\" }")
16726
+ Rules[:_Image] = rule_info("Image", "\"!\" ExplicitLinkWithLabel:a { \"rdoc-image:\#{a[:link]}:\#{a[:label]}\" }")
16705
16727
  Rules[:_Link] = rule_info("Link", "(ExplicitLink | ReferenceLink | AutoLink)")
16706
16728
  Rules[:_ReferenceLink] = rule_info("ReferenceLink", "(ReferenceLinkDouble | ReferenceLinkSingle)")
16707
16729
  Rules[:_ReferenceLinkDouble] = rule_info("ReferenceLinkDouble", "Label:content < Spnl > !\"[]\" Label:label { link_to content, label, text }")
16708
16730
  Rules[:_ReferenceLinkSingle] = rule_info("ReferenceLinkSingle", "Label:content < (Spnl \"[]\")? > { link_to content, content, text }")
16709
- Rules[:_ExplicitLink] = rule_info("ExplicitLink", "Label:l \"(\" @Sp Source:s Spnl Title @Sp \")\" { \"{\#{l}}[\#{s}]\" }")
16731
+ Rules[:_ExplicitLink] = rule_info("ExplicitLink", "ExplicitLinkWithLabel:a { \"{\#{a[:label]}}[\#{a[:link]}]\" }")
16732
+ Rules[:_ExplicitLinkWithLabel] = rule_info("ExplicitLinkWithLabel", "Label:label \"(\" @Sp Source:link Spnl Title @Sp \")\" { { label: label, link: link } }")
16710
16733
  Rules[:_Source] = rule_info("Source", "(\"<\" < SourceContents > \">\" | < SourceContents >) { text }")
16711
16734
  Rules[:_SourceContents] = rule_info("SourceContents", "((!\"(\" !\")\" !\">\" Nonspacechar)+ | \"(\" SourceContents \")\")*")
16712
16735
  Rules[:_Title] = rule_info("Title", "(TitleSingle | TitleDouble | \"\"):a { a }")
@@ -260,7 +260,7 @@ class RDoc::Markup::AttributeManager
260
260
 
261
261
  def add_word_pair(start, stop, name, exclusive = false)
262
262
  raise ArgumentError, "Word flags may not start with '<'" if
263
- start[0,1] == '<'
263
+ start[0, 1] == '<'
264
264
 
265
265
  bitmap = @attributes.bitmap_for name
266
266
 
@@ -271,7 +271,7 @@ class RDoc::Markup::AttributeManager
271
271
  @word_pair_map[pattern] = bitmap
272
272
  end
273
273
 
274
- @protectable << start[0,1]
274
+ @protectable << start[0, 1]
275
275
  @protectable.uniq!
276
276
 
277
277
  @exclusive_bitmap |= bitmap if exclusive
@@ -195,18 +195,20 @@ class RDoc::Markup::Formatter
195
195
  @in_tt > 0
196
196
  end
197
197
 
198
+ def tt_tag? attr_mask, reverse = false
199
+ each_attr_tag(attr_mask, reverse) do |tag|
200
+ return true if tt? tag
201
+ end
202
+ false
203
+ end
204
+
198
205
  ##
199
206
  # Turns on tags for +item+ on +res+
200
207
 
201
208
  def on_tags res, item
202
- attr_mask = item.turn_on
203
- return if attr_mask.zero?
204
-
205
- @attr_tags.each do |tag|
206
- if attr_mask & tag.bit != 0 then
207
- res << annotate(tag.on)
208
- @in_tt += 1 if tt? tag
209
- end
209
+ each_attr_tag(item.turn_on) do |tag|
210
+ res << annotate(tag.on)
211
+ @in_tt += 1 if tt? tag
210
212
  end
211
213
  end
212
214
 
@@ -214,13 +216,18 @@ class RDoc::Markup::Formatter
214
216
  # Turns off tags for +item+ on +res+
215
217
 
216
218
  def off_tags res, item
217
- attr_mask = item.turn_off
219
+ each_attr_tag(item.turn_off, true) do |tag|
220
+ @in_tt -= 1 if tt? tag
221
+ res << annotate(tag.off)
222
+ end
223
+ end
224
+
225
+ def each_attr_tag attr_mask, reverse = false
218
226
  return if attr_mask.zero?
219
227
 
220
- @attr_tags.reverse_each do |tag|
228
+ @attr_tags.public_send(reverse ? :reverse_each : :each) do |tag|
221
229
  if attr_mask & tag.bit != 0 then
222
- @in_tt -= 1 if tt? tag
223
- res << annotate(tag.off)
230
+ yield tag
224
231
  end
225
232
  end
226
233
  end
@@ -66,7 +66,13 @@ RDoc::Markup::Heading =
66
66
  # element.
67
67
 
68
68
  def plain_html
69
- self.class.to_html.to_html(text.dup)
69
+ text = self.text.dup
70
+
71
+ if matched = text.match(/rdoc-image:[^:]+:(.*)/)
72
+ text = matched[1]
73
+ end
74
+
75
+ self.class.to_html.to_html(text)
70
76
  end
71
77
 
72
78
  def pretty_print q # :nodoc:
@@ -97,15 +97,18 @@ class RDoc::Markup::PreProcess
97
97
  # RDoc::CodeObject#metadata for details.
98
98
 
99
99
  def handle text, code_object = nil, &block
100
+ first_line = 1
100
101
  if RDoc::Comment === text then
101
102
  comment = text
102
103
  text = text.text
104
+ first_line = comment.line || 1
103
105
  end
104
106
 
105
107
  # regexp helper (square brackets for optional)
106
108
  # $1 $2 $3 $4 $5
107
109
  # [prefix][\]:directive:[spaces][param]newline
108
- text = text.gsub(/^([ \t]*(?:#|\/?\*)?[ \t]*)(\\?):(\w+):([ \t]*)(.+)?(\r?\n|$)/) do
110
+ text = text.lines.map.with_index(first_line) do |line, num|
111
+ next line unless line =~ /\A([ \t]*(?:#|\/?\*)?[ \t]*)(\\?):([\w-]+):([ \t]*)(.+)?(\r?\n|$)/
109
112
  # skip something like ':toto::'
110
113
  next $& if $4.empty? and $5 and $5[0, 1] == ':'
111
114
 
@@ -120,8 +123,8 @@ class RDoc::Markup::PreProcess
120
123
  next "#{$1.strip}\n"
121
124
  end
122
125
 
123
- handle_directive $1, $3, $5, code_object, text.encoding, &block
124
- end
126
+ handle_directive $1, $3, $5, code_object, text.encoding, num, &block
127
+ end.join
125
128
 
126
129
  if comment then
127
130
  comment.text = text
@@ -148,7 +151,7 @@ class RDoc::Markup::PreProcess
148
151
  # When 1.8.7 support is ditched prefix can be defaulted to ''
149
152
 
150
153
  def handle_directive prefix, directive, param, code_object = nil,
151
- encoding = nil
154
+ encoding = nil, line = nil
152
155
  blankline = "#{prefix.strip}\n"
153
156
  directive = directive.downcase
154
157
 
@@ -184,6 +187,14 @@ class RDoc::Markup::PreProcess
184
187
  include_file filename, prefix, encoding
185
188
  when 'main' then
186
189
  @options.main_page = param if @options.respond_to? :main_page
190
+ warn <<~MSG
191
+ The :main: directive is deprecated and will be removed in RDoc 7.
192
+
193
+ You can use these options to specify the initial page displayed instead:
194
+ - `--main=#{param}` via the command line
195
+ - `rdoc.main = "#{param}"` if you use `RDoc::Task`
196
+ - `main_page: #{param}` in your `.rdoc_options` file
197
+ MSG
187
198
 
188
199
  blankline
189
200
  when 'nodoc' then
@@ -214,17 +225,26 @@ class RDoc::Markup::PreProcess
214
225
  when 'title' then
215
226
  @options.default_title = param if @options.respond_to? :default_title=
216
227
 
228
+ warn <<~MSG
229
+ The :title: directive is deprecated and will be removed in RDoc 7.
230
+
231
+ You can use these options to specify the title displayed instead:
232
+ - `--title=#{param}` via the command line
233
+ - `rdoc.title = "#{param}"` if you use `RDoc::Task`
234
+ - `title: #{param}` in your `.rdoc_options` file
235
+ MSG
236
+
217
237
  blankline
218
238
  when 'yield', 'yields' then
219
239
  return blankline unless code_object
220
240
  # remove parameter &block
221
241
  code_object.params = code_object.params.sub(/,?\s*&\w+/, '') if code_object.params
222
242
 
223
- code_object.block_params = param
243
+ code_object.block_params = param || ''
224
244
 
225
245
  blankline
226
246
  else
227
- result = yield directive, param if block_given?
247
+ result = yield directive, param, line if block_given?
228
248
 
229
249
  case result
230
250
  when nil then
@@ -24,7 +24,7 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
24
24
  def init_tags
25
25
  add_tag :BOLD, '+b', '-b'
26
26
  add_tag :EM, '+_', '-_'
27
- add_tag :TT, '' , '' # we need in_tt information maintained
27
+ add_tag :TT, '', '' # we need in_tt information maintained
28
28
  end
29
29
 
30
30
  ##
@@ -98,7 +98,12 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
98
98
 
99
99
  gen_url CGI.escapeHTML(url), CGI.escapeHTML(text)
100
100
  when /^rdoc-image:/
101
- %[<img src=\"#{CGI.escapeHTML($')}\">]
101
+ url, alt = $'.split(":", 2) # Split the string after "rdoc-image:" into url and alt
102
+ if alt && !alt.empty?
103
+ %[<img src="#{CGI.escapeHTML(url)}" alt="#{CGI.escapeHTML(alt)}">]
104
+ else
105
+ %[<img src="#{CGI.escapeHTML(url)}">]
106
+ end
102
107
  when /\Ardoc-[a-z]+:/
103
108
  CGI.escapeHTML($')
104
109
  end
@@ -407,7 +412,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
407
412
  "<li>"
408
413
  when :LABEL, :NOTE then
409
414
  Array(list_item.label).map do |label|
410
- "<dt>#{to_html label}\n"
415
+ "<dt>#{to_html label}</dt>\n"
411
416
  end.join << "<dd>"
412
417
  else
413
418
  raise RDoc::Error, "Invalid list type: #{list_type.inspect}"