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
@@ -24,7 +24,7 @@ class RDoc::Markup::ListItem
24
24
  ##
25
25
  # Creates a new ListItem with an optional +label+ containing +parts+
26
26
 
27
- def initialize label = nil, *parts
27
+ def initialize(label = nil, *parts)
28
28
  @label = label
29
29
  @parts = []
30
30
  @parts.concat parts
@@ -92,7 +92,7 @@ class RDoc::Markup::ListItem
92
92
  ##
93
93
  # Adds +parts+ to the ListItem
94
94
 
95
- def push *parts
95
+ def push(*parts)
96
96
  @parts.concat parts
97
97
  end
98
98
 
@@ -11,7 +11,7 @@ require 'strscan'
11
11
  # The parser only handles the block-level constructs Paragraph, List,
12
12
  # ListItem, Heading, Verbatim, BlankLine, Rule and BlockQuote.
13
13
  # Inline markup such as <tt>\+blah\+</tt> is handled separately by
14
- # RDoc::Markup::AttributeManager.
14
+ # RDoc::Markup::InlineParser.
15
15
  #
16
16
  # To see what markup the Parser implements read RDoc. To see how to use
17
17
  # RDoc markup to format text in your program read RDoc::Markup.
@@ -209,18 +209,6 @@ class RDoc::Markup::PreProcess
209
209
  when 'include' then
210
210
  filename = param.split(' ', 2).first
211
211
  include_file filename, prefix, encoding
212
- when 'main' then
213
- @options.main_page = param if @options.respond_to? :main_page
214
- warn <<~MSG
215
- The :main: directive is deprecated and will be removed in RDoc 7.
216
-
217
- You can use these options to specify the initial page displayed instead:
218
- - `--main=#{param}` via the command line
219
- - `rdoc.main = "#{param}"` if you use `RDoc::Task`
220
- - `main_page: #{param}` in your `.rdoc_options` file
221
- MSG
222
-
223
- blankline
224
212
  when 'nodoc' then
225
213
  return blankline unless code_object
226
214
  code_object.document_self = nil # notify nodoc
@@ -245,19 +233,6 @@ class RDoc::Markup::PreProcess
245
233
 
246
234
  code_object.stop_doc
247
235
 
248
- blankline
249
- when 'title' then
250
- @options.default_title = param if @options.respond_to? :default_title=
251
-
252
- warn <<~MSG
253
- The :title: directive is deprecated and will be removed in RDoc 7.
254
-
255
- You can use these options to specify the title displayed instead:
256
- - `--title=#{param}` via the command line
257
- - `rdoc.title = "#{param}"` if you use `RDoc::Task`
258
- - `title: #{param}` in your `.rdoc_options` file
259
- MSG
260
-
261
236
  blankline
262
237
  when 'yield', 'yields' then
263
238
  return blankline unless code_object
@@ -7,7 +7,7 @@ class RDoc::Markup::ToAnsi < RDoc::Markup::ToRdoc
7
7
  ##
8
8
  # Creates a new ToAnsi visitor that is ready to output vibrant ANSI color!
9
9
 
10
- def initialize(markup = nil)
10
+ def initialize
11
11
  super
12
12
 
13
13
  @headings.clear
@@ -19,10 +19,57 @@ class RDoc::Markup::ToAnsi < RDoc::Markup::ToRdoc
19
19
  ##
20
20
  # Maps attributes to ANSI sequences
21
21
 
22
- def init_tags
23
- add_tag :BOLD, "\e[1m", "\e[m"
24
- add_tag :TT, "\e[7m", "\e[m"
25
- add_tag :EM, "\e[4m", "\e[m"
22
+ ANSI_STYLE_CODES_ON = {
23
+ BOLD: 1,
24
+ TT: 7,
25
+ EM: 4,
26
+ STRIKE: 9
27
+ }
28
+
29
+ ANSI_STYLE_CODES_OFF = {
30
+ BOLD: 22,
31
+ TT: 27,
32
+ EM: 24,
33
+ STRIKE: 29
34
+ }
35
+
36
+ # Apply the given attributes by emitting ANSI sequences.
37
+ # Emitting attribute changes are deferred until new text is added and applied in batch.
38
+ # This method computes the necessary ANSI codes to transition from the
39
+ # current set of applied attributes to the new set of +attributes+.
40
+
41
+ def apply_attributes(attributes)
42
+ before = @applied_attributes
43
+ after = attributes.sort
44
+ return if before == after
45
+
46
+ if after.empty?
47
+ emit_inline("\e[m")
48
+ elsif !before.empty? && before.size > (before & after).size + 1
49
+ codes = after.map {|attr| ANSI_STYLE_CODES_ON[attr] }.compact
50
+ emit_inline("\e[#{[0, *codes].join(';')}m")
51
+ else
52
+ off_codes = (before - after).map {|attr| ANSI_STYLE_CODES_OFF[attr] }.compact
53
+ on_codes = (after - before).map {|attr| ANSI_STYLE_CODES_ON[attr] }.compact
54
+ emit_inline("\e[#{(off_codes + on_codes).join(';')}m")
55
+ end
56
+ @applied_attributes = attributes
57
+ end
58
+
59
+ def add_text(text)
60
+ attrs = @attributes.keys
61
+ if @applied_attributes != attrs
62
+ apply_attributes(attrs)
63
+ end
64
+ emit_inline(text)
65
+ end
66
+
67
+ def handle_inline(text)
68
+ @applied_attributes = []
69
+ res = super
70
+ res << "\e[m" unless @applied_attributes.empty?
71
+ @applied_attributes = []
72
+ res
26
73
  end
27
74
 
28
75
  ##
@@ -10,21 +10,36 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
10
10
  ##
11
11
  # Returns a new ToBs that is ready for hot backspace action!
12
12
 
13
- def initialize(markup = nil)
13
+ def initialize
14
14
  super
15
15
 
16
16
  @in_b = false
17
17
  @in_em = false
18
18
  end
19
19
 
20
- ##
21
- # Sets a flag that is picked up by #annotate to do the right thing in
22
- # #convert_string
20
+ def handle_inline(text)
21
+ initial_style = []
22
+ initial_style << :BOLD if @in_b
23
+ initial_style << :EM if @in_em
24
+ super(text, initial_style)
25
+ end
23
26
 
24
- def init_tags
25
- add_tag :BOLD, '+b', '-b'
26
- add_tag :EM, '+_', '-_'
27
- add_tag :TT, '', '' # we need in_tt information maintained
27
+ def add_text(text)
28
+ attrs = @attributes.keys
29
+ if attrs.include? :BOLD
30
+ styled = +''
31
+ text.chars.each do |c|
32
+ styled << "#{c}\b#{c}"
33
+ end
34
+ text = styled
35
+ elsif attrs.include? :EM
36
+ styled = +''
37
+ text.chars.each do |c|
38
+ styled << "_\b#{c}"
39
+ end
40
+ text = styled
41
+ end
42
+ emit_inline(text)
28
43
  end
29
44
 
30
45
  ##
@@ -68,39 +83,4 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
68
83
  def calculate_text_width(text)
69
84
  text.gsub(/_\x08/, '').gsub(/\x08./, '').size
70
85
  end
71
-
72
- ##
73
- # Turns on or off regexp handling for +convert_string+
74
-
75
- def annotate(tag)
76
- case tag
77
- when '+b' then @in_b = true
78
- when '-b' then @in_b = false
79
- when '+_' then @in_em = true
80
- when '-_' then @in_em = false
81
- end
82
- ''
83
- end
84
-
85
- ##
86
- # Calls convert_string on the result of convert_regexp_handling
87
-
88
- def convert_regexp_handling(target)
89
- convert_string super
90
- end
91
-
92
- ##
93
- # Adds bold or underline mixed with backspaces
94
-
95
- def convert_string(string)
96
- return string unless @in_b or @in_em
97
- chars = if @in_b then
98
- string.chars.map do |char| "#{char}\b#{char}" end
99
- elsif @in_em then
100
- string.chars.map do |char| "_\b#{char}" end
101
- end
102
-
103
- chars.join
104
- end
105
-
106
86
  end