rdoc 7.1.0 → 8.0.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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +3 -4
  3. data/LICENSE.rdoc +4 -0
  4. data/README.md +43 -2
  5. data/doc/markup_reference/markdown.md +104 -3
  6. data/lib/rdoc/code_object/alias.rb +2 -8
  7. data/lib/rdoc/code_object/any_method.rb +11 -6
  8. data/lib/rdoc/code_object/attr.rb +12 -6
  9. data/lib/rdoc/code_object/class_module.rb +62 -32
  10. data/lib/rdoc/code_object/constant.rb +29 -3
  11. data/lib/rdoc/code_object/context/section.rb +30 -43
  12. data/lib/rdoc/code_object/context.rb +53 -37
  13. data/lib/rdoc/code_object/method_attr.rb +9 -15
  14. data/lib/rdoc/code_object/mixin.rb +3 -0
  15. data/lib/rdoc/code_object/top_level.rb +11 -3
  16. data/lib/rdoc/code_object.rb +2 -4
  17. data/lib/rdoc/comment.rb +1 -66
  18. data/lib/rdoc/cross_reference.rb +8 -30
  19. data/lib/rdoc/encoding.rb +3 -3
  20. data/lib/rdoc/generator/aliki.rb +17 -0
  21. data/lib/rdoc/generator/darkfish.rb +12 -6
  22. data/lib/rdoc/generator/json_index.rb +2 -2
  23. data/lib/rdoc/generator/markup.rb +56 -31
  24. data/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
  25. data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +1 -1
  26. data/lib/rdoc/generator/template/aliki/_head.rhtml +6 -1
  27. data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +8 -6
  28. data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +8 -6
  29. data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +1 -1
  30. data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +2 -2
  31. data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +1 -1
  32. data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +1 -1
  33. data/lib/rdoc/generator/template/aliki/class.rhtml +61 -51
  34. data/lib/rdoc/generator/template/aliki/css/rdoc.css +365 -147
  35. data/lib/rdoc/generator/template/aliki/index.rhtml +1 -1
  36. data/lib/rdoc/generator/template/aliki/js/aliki.js +28 -20
  37. data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
  38. data/lib/rdoc/generator/template/aliki/js/search_controller.js +1 -1
  39. data/lib/rdoc/generator/template/aliki/page.rhtml +1 -1
  40. data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +1 -1
  41. data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +2 -2
  42. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +8 -6
  43. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +8 -6
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +1 -1
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +1 -1
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +1 -1
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +5 -5
  48. data/lib/rdoc/generator/template/darkfish/class.rhtml +18 -21
  49. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +0 -1
  50. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +3 -3
  51. data/lib/rdoc/i18n/text.rb +3 -3
  52. data/lib/rdoc/markdown.kpeg +36 -17
  53. data/lib/rdoc/markdown.rb +324 -125
  54. data/lib/rdoc/markup/document.rb +2 -2
  55. data/lib/rdoc/markup/formatter.rb +128 -115
  56. data/lib/rdoc/markup/heading.rb +3 -6
  57. data/lib/rdoc/markup/indented_paragraph.rb +1 -1
  58. data/lib/rdoc/markup/inline_parser.rb +312 -0
  59. data/lib/rdoc/markup/list.rb +2 -2
  60. data/lib/rdoc/markup/list_item.rb +2 -2
  61. data/lib/rdoc/markup/parser.rb +1 -1
  62. data/lib/rdoc/markup/pre_process.rb +0 -25
  63. data/lib/rdoc/markup/to_ansi.rb +52 -5
  64. data/lib/rdoc/markup/to_bs.rb +23 -43
  65. data/lib/rdoc/markup/to_html.rb +279 -226
  66. data/lib/rdoc/markup/to_html_crossref.rb +122 -136
  67. data/lib/rdoc/markup/to_html_snippet.rb +65 -65
  68. data/lib/rdoc/markup/to_joined_paragraph.rb +0 -5
  69. data/lib/rdoc/markup/to_label.rb +22 -23
  70. data/lib/rdoc/markup/to_markdown.rb +62 -38
  71. data/lib/rdoc/markup/to_rdoc.rb +88 -28
  72. data/lib/rdoc/markup/to_table_of_contents.rb +1 -1
  73. data/lib/rdoc/markup/to_test.rb +9 -1
  74. data/lib/rdoc/markup/to_tt_only.rb +10 -23
  75. data/lib/rdoc/markup/verbatim.rb +1 -1
  76. data/lib/rdoc/markup.rb +8 -30
  77. data/lib/rdoc/options.rb +36 -51
  78. data/lib/rdoc/parser/c.rb +7 -6
  79. data/lib/rdoc/parser/changelog.rb +21 -0
  80. data/lib/rdoc/parser/rbs.rb +275 -0
  81. data/lib/rdoc/parser/ruby.rb +955 -2067
  82. data/lib/rdoc/parser/ruby_colorizer.rb +253 -0
  83. data/lib/rdoc/parser.rb +3 -2
  84. data/lib/rdoc/rbs_helper.rb +186 -0
  85. data/lib/rdoc/rdoc.rb +196 -24
  86. data/lib/rdoc/ri/driver.rb +8 -2
  87. data/lib/rdoc/ri/paths.rb +1 -1
  88. data/lib/rdoc/{servlet.rb → ri/servlet.rb} +5 -5
  89. data/lib/rdoc/ri.rb +4 -3
  90. data/lib/rdoc/rubygems_hook.rb +11 -11
  91. data/lib/rdoc/server.rb +460 -0
  92. data/lib/rdoc/stats.rb +147 -124
  93. data/lib/rdoc/store.rb +212 -4
  94. data/lib/rdoc/task.rb +16 -15
  95. data/lib/rdoc/text.rb +24 -117
  96. data/lib/rdoc/token_stream.rb +11 -33
  97. data/lib/rdoc/version.rb +1 -1
  98. data/lib/rdoc.rb +35 -7
  99. data/lib/rubygems_plugin.rb +2 -11
  100. data/rdoc-logo.svg +43 -0
  101. data/rdoc.gemspec +6 -4
  102. metadata +37 -23
  103. data/lib/rdoc/code_object/anon_class.rb +0 -10
  104. data/lib/rdoc/code_object/ghost_method.rb +0 -6
  105. data/lib/rdoc/code_object/meta_method.rb +0 -6
  106. data/lib/rdoc/markup/attr_changer.rb +0 -22
  107. data/lib/rdoc/markup/attr_span.rb +0 -35
  108. data/lib/rdoc/markup/attribute_manager.rb +0 -432
  109. data/lib/rdoc/markup/attributes.rb +0 -70
  110. data/lib/rdoc/markup/regexp_handling.rb +0 -40
  111. data/lib/rdoc/parser/prism_ruby.rb +0 -1100
  112. data/lib/rdoc/parser/ripper_state_lex.rb +0 -302
  113. data/lib/rdoc/parser/ruby_tools.rb +0 -163
@@ -303,6 +303,20 @@
303
303
  end
304
304
  end
305
305
 
306
+ # Escape character that has special meaning in RDoc format.
307
+ # To allow rdoc-styled link used in markdown format for now, bracket and brace are not escaped.
308
+
309
+ def rdoc_escape(text)
310
+ text.gsub(/[*+<\\_]/) {|s| "\\#{s}" }
311
+ end
312
+
313
+ # Escape link url that contains brackets.
314
+ # Brackets needs escape because link url will be surrounded by `[]` in RDoc format.
315
+
316
+ def rdoc_link_url_escape(text)
317
+ text.gsub(/[\[\]\\]/) {|s| "\\#{s}" }
318
+ end
319
+
306
320
  ##
307
321
  # :category: Extensions
308
322
  #
@@ -389,6 +403,8 @@
389
403
  # the note order list for proper display at the end of the document.
390
404
 
391
405
  def note_for ref
406
+ return unless @note_order
407
+
392
408
  @note_order << ref
393
409
 
394
410
  label = @note_order.length
@@ -603,8 +619,8 @@ BlockQuote = BlockQuoteRaw:a
603
619
 
604
620
  BlockQuoteRaw = @StartList:a
605
621
  (( ">" " "? Line:l { a << l } )
606
- ( !">" !@BlankLine Line:c { a << c } )*
607
- ( @BlankLine:n { a << n } )*
622
+ ( !">" !@BlankLine !(AtxStart @Spacechar) !Bullet !Enumerator !( &{ github? } Ticks3 ) Line:c { a << c } )*
623
+ ( ">" @BlankLine:n { a << n } )*
608
624
  )+
609
625
  { inner_parse a.join }
610
626
 
@@ -961,6 +977,7 @@ Inline = Str
961
977
  | InlineNote
962
978
  | Code
963
979
  | RawHtml
980
+ | StrippedComment
964
981
  | Entity
965
982
  | EscapedChar
966
983
  | Symbol
@@ -969,11 +986,11 @@ Space = @Spacechar+ { " " }
969
986
 
970
987
  Str = @StartList:a
971
988
  < @NormalChar+ > { a = text }
972
- ( StrChunk:c { a << c } )* { a }
989
+ ( StrChunk:c { a << c } )* { rdoc_escape(a) }
973
990
 
974
991
  StrChunk = < (@NormalChar | /_+/ &Alphanumeric)+ > { text }
975
992
 
976
- EscapedChar = "\\" !@Newline < /[:\\`|*_{}\[\]()#+.!><-]/ > { text }
993
+ EscapedChar = "\\" !@Newline < /[:\\`|*_{}\[\]()#+.!><-]/ > { rdoc_escape(text) }
977
994
 
978
995
  Entity = ( HexEntity | DecEntity | CharEntity ):a { a }
979
996
 
@@ -988,7 +1005,7 @@ TerminalEndline = @Sp @Newline @Eof
988
1005
  LineBreak = " " @NormalEndline { RDoc::Markup::HardBreak.new }
989
1006
 
990
1007
  Symbol = < @SpecialChar >
991
- { text }
1008
+ { rdoc_escape(text) }
992
1009
 
993
1010
  # This keeps the parser from getting bogged down on long strings of '*' or '_',
994
1011
  # or strings of '*' or '_' with space on each side:
@@ -1053,7 +1070,7 @@ ReferenceLinkSingle = Label:content < (Spnl "[]")? >
1053
1070
  { link_to content, content, text }
1054
1071
 
1055
1072
  ExplicitLink = ExplicitLinkWithLabel:a
1056
- { "{#{a[:label]}}[#{a[:link]}]" }
1073
+ { "{#{a[:label]}}[#{rdoc_link_url_escape(a[:link])}]" }
1057
1074
 
1058
1075
  ExplicitLinkWithLabel = Label:label "(" @Sp Source:link Spnl Title @Sp ")"
1059
1076
  { { label: label, link: link } }
@@ -1138,8 +1155,8 @@ Code = ( Ticks1 < (
1138
1155
  )
1139
1156
  { code text }
1140
1157
 
1141
- RawHtml = < (HtmlComment | HtmlBlockScript | HtmlTag) >
1142
- { if html? then text else '' end }
1158
+ RawHtml = < HtmlBlockScript | HtmlTag > { html? ? text : '' }
1159
+ StrippedComment = HtmlComment { '' }
1143
1160
 
1144
1161
  BlankLine = @Sp @Newline { "\n" }
1145
1162
 
@@ -1163,12 +1180,12 @@ Newline = %literals.Newline
1163
1180
  Spacechar = %literals.Spacechar
1164
1181
 
1165
1182
  HexEntity = /&#x/i < /[0-9a-fA-F]+/ > ";"
1166
- { [text.to_i(16)].pack 'U' }
1183
+ { rdoc_escape([text.to_i(16)].pack('U')) }
1167
1184
  DecEntity = "&#" < /[0-9]+/ > ";"
1168
- { [text.to_i].pack 'U' }
1185
+ { rdoc_escape([text.to_i].pack('U')) }
1169
1186
  CharEntity = "&" </[A-Za-z0-9]+/ > ";"
1170
1187
  { if entity = HTML_ENTITIES[text] then
1171
- entity.pack 'U*'
1188
+ rdoc_escape(entity.pack('U*'))
1172
1189
  else
1173
1190
  "&#{text};"
1174
1191
  end
@@ -1219,10 +1236,12 @@ InlineNote = &{ notes? }
1219
1236
  @StartList:a
1220
1237
  ( !"]" Inline:l { a << l } )+
1221
1238
  "]"
1222
- { ref = [:inline, @note_order.length]
1223
- @footnotes[ref] = paragraph a
1239
+ { if @note_order
1240
+ ref = [:inline, @note_order.length]
1241
+ @footnotes[ref] = paragraph a
1224
1242
 
1225
- note_for ref
1243
+ note_for ref
1244
+ end
1226
1245
  }
1227
1246
 
1228
1247
  Notes = ( Note | SkipBlock )*
@@ -1235,7 +1254,7 @@ RawNoteBlock = @StartList:a
1235
1254
  # Markdown extensions added by RDoc follow
1236
1255
 
1237
1256
  CodeFence = &{ github? }
1238
- Ticks3 (@Sp StrChunk:format)? Spnl < (
1257
+ Ticks3 (@Sp StrChunk:format)? @Sp @Newline? < (
1239
1258
  ( !"`" Nonspacechar )+ |
1240
1259
  !Ticks3 /`+/ |
1241
1260
  Spacechar |
@@ -1256,13 +1275,13 @@ Table = &{ github? }
1256
1275
  TableHead = TableItem2+:items "|"? @Newline
1257
1276
  { items }
1258
1277
 
1259
- TableRow = ( ( TableItem:item1 TableItem2*:items { [item1, *items] } ):row | TableItem2+:row ) "|"? @Newline
1278
+ TableRow = ( ( TableItem:item1 TableItem2+:items { [item1, *items] } ):row | TableItem2+:row ) "|"? @Newline
1260
1279
  { row }
1261
1280
  TableItem2 = "|" TableItem
1262
1281
  TableItem = < /(?:\\.|[^|\n])+/ >
1263
1282
  { text.strip.gsub(/\\([|])/, '\1') }
1264
1283
 
1265
- TableLine = ( ( TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] } ):line | TableAlign2+:line ) "|"? @Newline
1284
+ TableLine = ( ( TableAlign:align1 TableAlign2+:aligns {[align1, *aligns] } ):line | TableAlign2+:line ) "|"? @Newline
1266
1285
  { line }
1267
1286
  TableAlign2 = "|" @Sp TableAlign
1268
1287
  TableAlign = < /:?-+:?/ > @Sp