rdoc 5.1.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 (179) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +5 -6
  3. data/ExampleMarkdown.md +2 -0
  4. data/ExampleRDoc.rdoc +2 -0
  5. data/History.rdoc +68 -66
  6. data/LEGAL.rdoc +1 -1
  7. data/LICENSE.rdoc +2 -0
  8. data/README.rdoc +18 -6
  9. data/RI.md +842 -0
  10. data/TODO.rdoc +8 -7
  11. data/exe/rdoc +0 -1
  12. data/lib/rdoc/{alias.rb → code_object/alias.rb} +4 -12
  13. data/lib/rdoc/{anon_class.rb → code_object/anon_class.rb} +1 -2
  14. data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +83 -26
  15. data/lib/rdoc/{attr.rb → code_object/attr.rb} +5 -9
  16. data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +112 -24
  17. data/lib/rdoc/{constant.rb → code_object/constant.rb} +4 -5
  18. data/lib/rdoc/{context → code_object/context}/section.rb +13 -83
  19. data/lib/rdoc/{context.rb → code_object/context.rb} +69 -70
  20. data/lib/rdoc/{extend.rb → code_object/extend.rb} +1 -2
  21. data/lib/rdoc/{ghost_method.rb → code_object/ghost_method.rb} +1 -2
  22. data/lib/rdoc/{include.rb → code_object/include.rb} +1 -2
  23. data/lib/rdoc/{meta_method.rb → code_object/meta_method.rb} +1 -2
  24. data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +22 -31
  25. data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +1 -2
  26. data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +4 -5
  27. data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +2 -3
  28. data/lib/rdoc/{require.rb → code_object/require.rb} +2 -3
  29. data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +6 -2
  30. data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +22 -32
  31. data/lib/rdoc/code_object.rb +8 -41
  32. data/lib/rdoc/code_objects.rb +2 -3
  33. data/lib/rdoc/comment.rb +48 -41
  34. data/lib/rdoc/cross_reference.rb +77 -33
  35. data/lib/rdoc/encoding.rb +50 -38
  36. data/lib/rdoc/erb_partial.rb +2 -3
  37. data/lib/rdoc/erbio.rb +4 -5
  38. data/lib/rdoc/generator/darkfish.rb +178 -125
  39. data/lib/rdoc/generator/json_index.rb +9 -22
  40. data/lib/rdoc/generator/markup.rb +6 -17
  41. data/lib/rdoc/generator/pot/message_extractor.rb +4 -4
  42. data/lib/rdoc/generator/pot/po.rb +3 -3
  43. data/lib/rdoc/generator/pot/po_entry.rb +12 -12
  44. data/lib/rdoc/generator/pot.rb +4 -8
  45. data/lib/rdoc/generator/ri.rb +1 -2
  46. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
  47. data/lib/rdoc/generator/template/darkfish/_head.rhtml +35 -12
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -5
  49. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
  50. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
  51. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
  52. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +19 -10
  53. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +26 -6
  54. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +4 -9
  55. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +1 -1
  56. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
  57. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +27 -6
  58. data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  59. data/lib/rdoc/generator/template/darkfish/class.rhtml +125 -78
  60. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +430 -339
  61. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  62. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  63. data/lib/rdoc/generator/template/darkfish/index.rhtml +13 -13
  64. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -92
  65. data/lib/rdoc/generator/template/darkfish/js/search.js +35 -34
  66. data/lib/rdoc/generator/template/darkfish/page.rhtml +5 -5
  67. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +10 -8
  68. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +20 -18
  69. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +32 -20
  70. data/lib/rdoc/generator/template/json_index/js/navigation.js +12 -49
  71. data/lib/rdoc/generator/template/json_index/js/searcher.js +6 -6
  72. data/lib/rdoc/generator.rb +6 -6
  73. data/lib/rdoc/i18n/locale.rb +1 -1
  74. data/lib/rdoc/i18n/text.rb +5 -5
  75. data/lib/rdoc/i18n.rb +4 -4
  76. data/lib/rdoc/known_classes.rb +6 -5
  77. data/lib/rdoc/markdown/entities.rb +1 -2
  78. data/lib/rdoc/markdown/literals.kpeg +1 -2
  79. data/lib/rdoc/markdown/literals.rb +99 -50
  80. data/lib/rdoc/markdown.kpeg +115 -58
  81. data/lib/rdoc/markdown.rb +1584 -902
  82. data/lib/rdoc/markup/attr_changer.rb +1 -2
  83. data/lib/rdoc/markup/attr_span.rb +9 -4
  84. data/lib/rdoc/markup/attribute_manager.rb +118 -57
  85. data/lib/rdoc/markup/attributes.rb +7 -8
  86. data/lib/rdoc/markup/blank_line.rb +1 -2
  87. data/lib/rdoc/markup/block_quote.rb +1 -2
  88. data/lib/rdoc/markup/document.rb +1 -2
  89. data/lib/rdoc/markup/formatter.rb +44 -37
  90. data/lib/rdoc/markup/hard_break.rb +1 -2
  91. data/lib/rdoc/markup/heading.rb +11 -6
  92. data/lib/rdoc/markup/include.rb +1 -2
  93. data/lib/rdoc/markup/indented_paragraph.rb +1 -2
  94. data/lib/rdoc/markup/list.rb +1 -2
  95. data/lib/rdoc/markup/list_item.rb +1 -2
  96. data/lib/rdoc/markup/paragraph.rb +1 -2
  97. data/lib/rdoc/markup/parser.rb +90 -48
  98. data/lib/rdoc/markup/pre_process.rb +38 -11
  99. data/lib/rdoc/markup/raw.rb +1 -2
  100. data/lib/rdoc/markup/regexp_handling.rb +40 -0
  101. data/lib/rdoc/markup/rule.rb +1 -2
  102. data/lib/rdoc/markup/table.rb +56 -0
  103. data/lib/rdoc/markup/to_ansi.rb +1 -2
  104. data/lib/rdoc/markup/to_bs.rb +30 -5
  105. data/lib/rdoc/markup/to_html.rb +95 -40
  106. data/lib/rdoc/markup/to_html_crossref.rb +108 -43
  107. data/lib/rdoc/markup/to_html_snippet.rb +13 -11
  108. data/lib/rdoc/markup/to_joined_paragraph.rb +6 -32
  109. data/lib/rdoc/markup/to_label.rb +11 -12
  110. data/lib/rdoc/markup/to_markdown.rb +13 -14
  111. data/lib/rdoc/markup/to_rdoc.rb +49 -31
  112. data/lib/rdoc/markup/to_table_of_contents.rb +2 -2
  113. data/lib/rdoc/markup/to_test.rb +1 -2
  114. data/lib/rdoc/markup/to_tt_only.rb +3 -4
  115. data/lib/rdoc/markup/verbatim.rb +1 -2
  116. data/lib/rdoc/markup.rb +64 -694
  117. data/lib/rdoc/options.rb +226 -44
  118. data/lib/rdoc/parser/c.rb +231 -246
  119. data/lib/rdoc/parser/changelog.rb +169 -23
  120. data/lib/rdoc/parser/markdown.rb +1 -3
  121. data/lib/rdoc/parser/prism_ruby.rb +1092 -0
  122. data/lib/rdoc/parser/rd.rb +1 -2
  123. data/lib/rdoc/parser/ripper_state_lex.rb +302 -0
  124. data/lib/rdoc/parser/ruby.rb +695 -478
  125. data/lib/rdoc/parser/ruby_tools.rb +33 -36
  126. data/lib/rdoc/parser/simple.rb +4 -4
  127. data/lib/rdoc/parser/text.rb +1 -2
  128. data/lib/rdoc/parser.rb +37 -42
  129. data/lib/rdoc/rd/block_parser.rb +708 -57
  130. data/lib/rdoc/rd/block_parser.ry +15 -11
  131. data/lib/rdoc/rd/inline.rb +5 -6
  132. data/lib/rdoc/rd/inline_parser.rb +787 -140
  133. data/lib/rdoc/rd/inline_parser.ry +1 -1
  134. data/lib/rdoc/rd.rb +4 -5
  135. data/lib/rdoc/rdoc.rb +72 -87
  136. data/lib/rdoc/ri/driver.rb +236 -152
  137. data/lib/rdoc/ri/formatter.rb +1 -1
  138. data/lib/rdoc/ri/paths.rb +4 -18
  139. data/lib/rdoc/ri/store.rb +1 -2
  140. data/lib/rdoc/ri/task.rb +2 -2
  141. data/lib/rdoc/ri.rb +5 -6
  142. data/lib/rdoc/rubygems_hook.rb +98 -20
  143. data/lib/rdoc/servlet.rb +30 -20
  144. data/lib/rdoc/stats/normal.rb +24 -18
  145. data/lib/rdoc/stats/quiet.rb +1 -2
  146. data/lib/rdoc/stats/verbose.rb +1 -3
  147. data/lib/rdoc/stats.rb +6 -7
  148. data/lib/rdoc/store.rb +84 -55
  149. data/lib/rdoc/task.rb +35 -10
  150. data/lib/rdoc/text.rb +40 -27
  151. data/lib/rdoc/token_stream.rb +56 -34
  152. data/lib/rdoc/tom_doc.rb +18 -19
  153. data/lib/rdoc/version.rb +10 -0
  154. data/lib/rdoc.rb +80 -56
  155. data/lib/rubygems_plugin.rb +23 -0
  156. data/man/ri.1 +247 -0
  157. metadata +45 -99
  158. data/.document +0 -5
  159. data/.gitignore +0 -13
  160. data/.travis.yml +0 -24
  161. data/Gemfile +0 -3
  162. data/RI.rdoc +0 -57
  163. data/Rakefile +0 -133
  164. data/bin/console +0 -7
  165. data/bin/setup +0 -6
  166. data/lib/gauntlet_rdoc.rb +0 -82
  167. data/lib/rdoc/generator/template/darkfish/.document +0 -0
  168. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
  169. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
  170. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
  171. data/lib/rdoc/generator/template/json_index/.document +0 -1
  172. data/lib/rdoc/markup/formatter_test_case.rb +0 -764
  173. data/lib/rdoc/markup/inline.rb +0 -2
  174. data/lib/rdoc/markup/special.rb +0 -41
  175. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
  176. data/lib/rdoc/ruby_lex.rb +0 -1367
  177. data/lib/rdoc/ruby_token.rb +0 -461
  178. data/lib/rdoc/test_case.rb +0 -204
  179. data/rdoc.gemspec +0 -57
@@ -1,12 +1,9 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
- # Collection of methods for writing parsers against RDoc::RubyLex and
4
- # RDoc::RubyToken
3
+ # Collection of methods for writing parsers
5
4
 
6
5
  module RDoc::Parser::RubyTools
7
6
 
8
- include RDoc::RubyToken
9
-
10
7
  ##
11
8
  # Adds a token listener +obj+, but you should probably use token_listener
12
9
 
@@ -22,37 +19,24 @@ module RDoc::Parser::RubyTools
22
19
  tk = nil
23
20
 
24
21
  if @tokens.empty? then
25
- tk = @scanner.token
26
- @read.push @scanner.get_readed
27
- puts "get_tk1 => #{tk.inspect}" if $TOKEN_DEBUG
22
+ if @scanner_point >= @scanner.size
23
+ return nil
24
+ else
25
+ tk = @scanner[@scanner_point]
26
+ @scanner_point += 1
27
+ @read.push tk[:text]
28
+ end
28
29
  else
29
30
  @read.push @unget_read.shift
30
31
  tk = @tokens.shift
31
- puts "get_tk2 => #{tk.inspect}" if $TOKEN_DEBUG
32
32
  end
33
33
 
34
- tk = nil if TkEND_OF_SCRIPT === tk
35
-
36
- if TkSYMBEG === tk then
37
- set_token_position tk.line_no, tk.char_no
38
-
39
- case tk1 = get_tk
40
- when TkId, TkOp, TkSTRING, TkDSTRING, TkSTAR, TkAMPER then
41
- if tk1.respond_to?(:name) then
42
- tk = Token(TkSYMBOL).set_text(":" + tk1.name)
43
- else
44
- tk = Token(TkSYMBOL).set_text(":" + tk1.text)
45
- end
46
-
47
- # remove the identifier we just read to replace it with a symbol
48
- @token_listeners.each do |obj|
49
- obj.pop_token
50
- end if @token_listeners
51
- else
52
- tk = tk1
53
- end
34
+ if tk == nil || :on___end__ == tk[:kind]
35
+ tk = nil
54
36
  end
55
37
 
38
+ return nil unless tk
39
+
56
40
  # inform any listeners of our shiny new token
57
41
  @token_listeners.each do |obj|
58
42
  obj.add_token(tk)
@@ -122,19 +106,34 @@ module RDoc::Parser::RubyTools
122
106
  @tokens = []
123
107
  @unget_read = []
124
108
  @nest = 0
109
+ @scanner_point = 0
110
+ end
111
+
112
+ ##
113
+ # Skips whitespace tokens including newlines
114
+
115
+ def skip_tkspace
116
+ tokens = []
117
+
118
+ while (tk = get_tk) and (:on_sp == tk[:kind] or :on_nl == tk[:kind] or :on_ignored_nl == tk[:kind]) do
119
+ tokens.push(tk)
120
+ end
121
+
122
+ unget_tk(tk)
123
+ tokens
125
124
  end
126
125
 
127
126
  ##
128
- # Skips whitespace tokens including newlines if +skip_nl+ is true
127
+ # Skips whitespace tokens excluding newlines
129
128
 
130
- def skip_tkspace(skip_nl = true) # HACK dup
129
+ def skip_tkspace_without_nl
131
130
  tokens = []
132
131
 
133
- while TkSPACE === (tk = get_tk) or (skip_nl and TkNL === tk) do
134
- tokens.push tk
132
+ while (tk = get_tk) and :on_sp == tk[:kind] do
133
+ tokens.push(tk)
135
134
  end
136
135
 
137
- unget_tk tk
136
+ unget_tk(tk)
138
137
  tokens
139
138
  end
140
139
 
@@ -164,5 +163,3 @@ module RDoc::Parser::RubyTools
164
163
  end
165
164
 
166
165
  end
167
-
168
-
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Parse a non-source file. We basically take the whole thing as one big
4
4
  # comment.
@@ -14,12 +14,12 @@ class RDoc::Parser::Simple < RDoc::Parser
14
14
  ##
15
15
  # Prepare to parse a plain file
16
16
 
17
- def initialize(top_level, file_name, content, options, stats)
17
+ def initialize(top_level, content, options, stats)
18
18
  super
19
19
 
20
20
  preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include
21
21
 
22
- preprocess.handle @content, @top_level
22
+ @content = preprocess.handle @content, @top_level
23
23
  end
24
24
 
25
25
  ##
@@ -52,7 +52,7 @@ class RDoc::Parser::Simple < RDoc::Parser
52
52
  def remove_private_comment comment
53
53
  # Workaround for gsub encoding for Ruby 1.9.2 and earlier
54
54
  empty = ''
55
- empty.force_encoding comment.encoding
55
+ empty = RDoc::Encoding.change_encoding empty, comment.encoding
56
56
 
57
57
  comment = comment.gsub(%r%^--\n.*?^\+\+\n?%m, empty)
58
58
  comment.sub(%r%^--\n.*%m, empty)
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Indicates this parser is text and doesn't contain code constructs.
4
4
  #
@@ -9,4 +9,3 @@
9
9
 
10
10
  module RDoc::Parser::Text
11
11
  end
12
-
data/lib/rdoc/parser.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- coding: us-ascii -*-
2
- # frozen_string_literal: false
2
+ # frozen_string_literal: true
3
3
 
4
4
  ##
5
5
  # A parser is simple a class that subclasses RDoc::Parser and implements #scan
@@ -78,7 +78,7 @@ class RDoc::Parser
78
78
 
79
79
  return true if s[0, 2] == Marshal.dump('')[0, 2] or s.index("\x00")
80
80
 
81
- mode = 'r:utf-8' # default source encoding has been chagened to utf-8
81
+ mode = 'r:utf-8' # default source encoding has been changed to utf-8
82
82
  s.sub!(/\A#!.*\n/, '') # assume shebang line isn't longer than 1024.
83
83
  encoding = s[/^\s*\#\s*(?:-\*-\s*)?(?:en)?coding:\s*([^\s;]+?)(?:-\*-|[\s;])/, 1]
84
84
  mode = "rb:#{encoding}" if encoding
@@ -87,31 +87,6 @@ class RDoc::Parser
87
87
  not s.valid_encoding?
88
88
  end
89
89
 
90
- ##
91
- # Processes common directives for CodeObjects for the C and Ruby parsers.
92
- #
93
- # Applies +directive+'s +value+ to +code_object+, if appropriate
94
-
95
- def self.process_directive code_object, directive, value
96
- warn "RDoc::Parser::process_directive is deprecated and wil be removed in RDoc 4. Use RDoc::Markup::PreProcess#handle_directive instead" if $-w
97
-
98
- case directive
99
- when 'nodoc' then
100
- code_object.document_self = nil # notify nodoc
101
- code_object.document_children = value.downcase != 'all'
102
- when 'doc' then
103
- code_object.document_self = true
104
- code_object.force_documentation = true
105
- when 'yield', 'yields' then
106
- # remove parameter &block
107
- code_object.params.sub!(/,?\s*&\w+/, '') if code_object.params
108
-
109
- code_object.block_params = value
110
- when 'arg', 'args' then
111
- code_object.params = value
112
- end
113
- end
114
-
115
90
  ##
116
91
  # Checks if +file+ is a zip file in disguise. Signatures from
117
92
  # http://www.garykessler.net/library/file_sigs.html
@@ -150,9 +125,11 @@ class RDoc::Parser
150
125
  return parser if ext_name.empty?
151
126
 
152
127
  if parser == RDoc::Parser::Simple and ext_name !~ /txt|rdoc/ then
153
- case check_modeline file_name
128
+ case mode = check_modeline(file_name)
154
129
  when nil, 'rdoc' then # continue
155
- else return nil
130
+ else
131
+ RDoc::Parser.parsers.find { |_, p| return p if mode.casecmp?(p.name[/\w+\z/]) }
132
+ return nil
156
133
  end
157
134
  end
158
135
 
@@ -164,7 +141,7 @@ class RDoc::Parser
164
141
  # Returns the file type from the modeline in +file_name+
165
142
 
166
143
  def self.check_modeline file_name
167
- line = open file_name do |io|
144
+ line = File.open file_name do |io|
168
145
  io.gets
169
146
  end
170
147
 
@@ -189,7 +166,8 @@ class RDoc::Parser
189
166
  # Finds and instantiates the correct parser for the given +file_name+ and
190
167
  # +content+.
191
168
 
192
- def self.for top_level, file_name, content, options, stats
169
+ def self.for top_level, content, options, stats
170
+ file_name = top_level.absolute_name
193
171
  return if binary? file_name
194
172
 
195
173
  parser = use_markup content
@@ -213,7 +191,7 @@ class RDoc::Parser
213
191
 
214
192
  content = remove_modeline content
215
193
 
216
- parser.new top_level, file_name, content, options, stats
194
+ parser.new top_level, content, options, stats
217
195
  rescue SystemCallError
218
196
  nil
219
197
  end
@@ -274,12 +252,12 @@ class RDoc::Parser
274
252
  # RDoc::Markup::PreProcess object is created which allows processing of
275
253
  # directives.
276
254
 
277
- def initialize top_level, file_name, content, options, stats
255
+ def initialize top_level, content, options, stats
278
256
  @top_level = top_level
279
257
  @top_level.parser = self.class
280
258
  @store = @top_level.store
281
259
 
282
- @file_name = file_name
260
+ @file_name = top_level.absolute_name
283
261
  @content = content
284
262
  @options = options
285
263
  @stats = stats
@@ -288,15 +266,32 @@ class RDoc::Parser
288
266
  @preprocess.options = @options
289
267
  end
290
268
 
291
- autoload :RubyTools, 'rdoc/parser/ruby_tools'
292
- autoload :Text, 'rdoc/parser/text'
269
+ autoload :RubyTools, "#{__dir__}/parser/ruby_tools"
270
+ autoload :Text, "#{__dir__}/parser/text"
293
271
 
272
+ ##
273
+ # Normalizes tabs in +body+
274
+
275
+ def handle_tab_width(body)
276
+ if /\t/ =~ body
277
+ tab_width = @options.tab_width
278
+ body.split(/\n/).map do |line|
279
+ 1 while line.gsub!(/\t+/) do
280
+ b, e = $~.offset(0)
281
+ ' ' * (tab_width * (e-b) - b % tab_width)
282
+ end
283
+ line
284
+ end.join "\n"
285
+ else
286
+ body
287
+ end
288
+ end
294
289
  end
295
290
 
296
291
  # simple must come first in order to show up last in the parsers list
297
- require 'rdoc/parser/simple'
298
- require 'rdoc/parser/c'
299
- require 'rdoc/parser/changelog'
300
- require 'rdoc/parser/markdown'
301
- require 'rdoc/parser/rd'
302
- require 'rdoc/parser/ruby'
292
+ require_relative 'parser/simple'
293
+ require_relative 'parser/c'
294
+ require_relative 'parser/changelog'
295
+ require_relative 'parser/markdown'
296
+ require_relative 'parser/rd'
297
+ require_relative 'parser/ruby'