rdoc 3.1 → 6.3.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rdoc might be problematic. Click here for more details.

Files changed (247) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.rdoc +220 -0
  3. data/CVE-2013-0256.rdoc +49 -0
  4. data/ExampleMarkdown.md +37 -0
  5. data/ExampleRDoc.rdoc +208 -0
  6. data/Gemfile +12 -0
  7. data/History.rdoc +1666 -0
  8. data/LEGAL.rdoc +50 -0
  9. data/LICENSE.rdoc +57 -0
  10. data/README.rdoc +129 -0
  11. data/RI.rdoc +57 -0
  12. data/Rakefile +84 -81
  13. data/TODO.rdoc +59 -0
  14. data/bin/console +7 -0
  15. data/bin/setup +6 -0
  16. data/{bin → exe}/rdoc +11 -2
  17. data/exe/ri +12 -0
  18. data/lib/rdoc/alias.rb +1 -2
  19. data/lib/rdoc/anon_class.rb +3 -2
  20. data/lib/rdoc/any_method.rb +234 -40
  21. data/lib/rdoc/attr.rb +79 -11
  22. data/lib/rdoc/class_module.rb +443 -71
  23. data/lib/rdoc/code_object.rb +216 -20
  24. data/lib/rdoc/code_objects.rb +4 -21
  25. data/lib/rdoc/comment.rb +250 -0
  26. data/lib/rdoc/constant.rb +110 -9
  27. data/lib/rdoc/context/section.rb +232 -0
  28. data/lib/rdoc/context.rb +392 -172
  29. data/lib/rdoc/cross_reference.rb +202 -0
  30. data/lib/rdoc/encoding.rb +83 -28
  31. data/lib/rdoc/erb_partial.rb +19 -0
  32. data/lib/rdoc/erbio.rb +8 -3
  33. data/lib/rdoc/extend.rb +10 -0
  34. data/lib/rdoc/generator/darkfish.rb +507 -84
  35. data/lib/rdoc/generator/json_index.rb +300 -0
  36. data/lib/rdoc/generator/markup.rb +27 -74
  37. data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  38. data/lib/rdoc/generator/pot/po.rb +84 -0
  39. data/lib/rdoc/generator/pot/po_entry.rb +141 -0
  40. data/lib/rdoc/generator/pot.rb +98 -0
  41. data/lib/rdoc/generator/ri.rb +8 -62
  42. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
  43. data/lib/rdoc/generator/template/darkfish/_head.rhtml +22 -0
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +9 -0
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
  49. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
  50. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +12 -0
  51. data/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
  52. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +12 -0
  53. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +11 -0
  54. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
  55. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
  56. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +18 -0
  57. data/lib/rdoc/generator/template/darkfish/class.rhtml +172 -0
  58. data/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
  59. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +639 -0
  60. data/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
  61. data/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
  62. data/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
  63. data/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
  64. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  65. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  66. data/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
  67. data/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
  68. data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
  69. data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
  70. data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
  71. data/lib/rdoc/generator/template/darkfish/index.rhtml +18 -60
  72. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -83
  73. data/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
  74. data/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
  75. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +18 -0
  76. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +62 -0
  77. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +58 -0
  78. data/lib/rdoc/generator/template/json_index/.document +1 -0
  79. data/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
  80. data/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
  81. data/lib/rdoc/generator.rb +24 -13
  82. data/lib/rdoc/ghost_method.rb +1 -2
  83. data/lib/rdoc/i18n/locale.rb +102 -0
  84. data/lib/rdoc/i18n/text.rb +126 -0
  85. data/lib/rdoc/i18n.rb +10 -0
  86. data/lib/rdoc/include.rb +5 -95
  87. data/lib/rdoc/known_classes.rb +5 -2
  88. data/lib/rdoc/markdown/entities.rb +2132 -0
  89. data/lib/rdoc/markdown/literals.kpeg +23 -0
  90. data/lib/rdoc/markdown/literals.rb +416 -0
  91. data/lib/rdoc/markdown.kpeg +1237 -0
  92. data/lib/rdoc/markdown.rb +16684 -0
  93. data/lib/rdoc/markup/attr_changer.rb +23 -0
  94. data/lib/rdoc/markup/attr_span.rb +36 -0
  95. data/lib/rdoc/markup/attribute_manager.rb +135 -62
  96. data/lib/rdoc/markup/attributes.rb +71 -0
  97. data/lib/rdoc/markup/blank_line.rb +1 -0
  98. data/lib/rdoc/markup/block_quote.rb +15 -0
  99. data/lib/rdoc/markup/document.rb +96 -9
  100. data/lib/rdoc/markup/formatter.rb +138 -25
  101. data/lib/rdoc/markup/hard_break.rb +32 -0
  102. data/lib/rdoc/markup/heading.rb +61 -2
  103. data/lib/rdoc/markup/include.rb +43 -0
  104. data/lib/rdoc/markup/indented_paragraph.rb +48 -0
  105. data/lib/rdoc/markup/list.rb +25 -4
  106. data/lib/rdoc/markup/list_item.rb +18 -4
  107. data/lib/rdoc/markup/paragraph.rb +15 -0
  108. data/lib/rdoc/markup/parser.rb +180 -88
  109. data/lib/rdoc/markup/pre_process.rb +183 -38
  110. data/lib/rdoc/markup/raw.rb +6 -5
  111. data/lib/rdoc/markup/regexp_handling.rb +41 -0
  112. data/lib/rdoc/markup/rule.rb +1 -0
  113. data/lib/rdoc/markup/table.rb +47 -0
  114. data/lib/rdoc/markup/to_ansi.rb +17 -7
  115. data/lib/rdoc/markup/to_bs.rb +5 -8
  116. data/lib/rdoc/markup/to_html.rb +238 -137
  117. data/lib/rdoc/markup/to_html_crossref.rb +125 -152
  118. data/lib/rdoc/markup/to_html_snippet.rb +285 -0
  119. data/lib/rdoc/markup/to_joined_paragraph.rb +47 -0
  120. data/lib/rdoc/markup/to_label.rb +75 -0
  121. data/lib/rdoc/markup/to_markdown.rb +192 -0
  122. data/lib/rdoc/markup/to_rdoc.rb +85 -15
  123. data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
  124. data/lib/rdoc/markup/to_test.rb +2 -4
  125. data/lib/rdoc/markup/to_tt_only.rb +121 -0
  126. data/lib/rdoc/markup/verbatim.rb +39 -0
  127. data/lib/rdoc/markup.rb +388 -110
  128. data/lib/rdoc/meta_method.rb +1 -2
  129. data/lib/rdoc/method_attr.rb +87 -21
  130. data/lib/rdoc/mixin.rb +121 -0
  131. data/lib/rdoc/normal_class.rb +39 -10
  132. data/lib/rdoc/normal_module.rb +22 -7
  133. data/lib/rdoc/options.rb +613 -73
  134. data/lib/rdoc/parser/c.rb +621 -287
  135. data/lib/rdoc/parser/changelog.rb +335 -0
  136. data/lib/rdoc/parser/markdown.rb +24 -0
  137. data/lib/rdoc/parser/rd.rb +23 -0
  138. data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
  139. data/lib/rdoc/parser/ruby.rb +1368 -762
  140. data/lib/rdoc/parser/ruby_tools.rb +42 -35
  141. data/lib/rdoc/parser/simple.rb +23 -11
  142. data/lib/rdoc/parser/text.rb +12 -0
  143. data/lib/rdoc/parser.rb +162 -89
  144. data/lib/rdoc/rd/block_parser.rb +1056 -0
  145. data/lib/rdoc/rd/block_parser.ry +639 -0
  146. data/lib/rdoc/rd/inline.rb +72 -0
  147. data/lib/rdoc/rd/inline_parser.rb +1208 -0
  148. data/lib/rdoc/rd/inline_parser.ry +593 -0
  149. data/lib/rdoc/rd.rb +100 -0
  150. data/lib/rdoc/rdoc.rb +208 -115
  151. data/lib/rdoc/require.rb +1 -2
  152. data/lib/rdoc/ri/driver.rb +734 -239
  153. data/lib/rdoc/ri/formatter.rb +1 -0
  154. data/lib/rdoc/ri/paths.rb +91 -48
  155. data/lib/rdoc/ri/store.rb +3 -261
  156. data/lib/rdoc/ri/task.rb +71 -0
  157. data/lib/rdoc/ri.rb +5 -2
  158. data/lib/rdoc/rubygems_hook.rb +246 -0
  159. data/lib/rdoc/servlet.rb +451 -0
  160. data/lib/rdoc/single_class.rb +14 -2
  161. data/lib/rdoc/stats/normal.rb +19 -12
  162. data/lib/rdoc/stats/quiet.rb +1 -0
  163. data/lib/rdoc/stats/verbose.rb +1 -0
  164. data/lib/rdoc/stats.rb +262 -104
  165. data/lib/rdoc/store.rb +979 -0
  166. data/lib/rdoc/task.rb +84 -44
  167. data/lib/rdoc/text.rb +117 -72
  168. data/lib/rdoc/token_stream.rb +73 -4
  169. data/lib/rdoc/tom_doc.rb +263 -0
  170. data/lib/rdoc/top_level.rb +111 -261
  171. data/lib/rdoc/version.rb +8 -0
  172. data/lib/rdoc.rb +127 -64
  173. data/man/ri.1 +247 -0
  174. data/rdoc.gemspec +249 -0
  175. metadata +171 -291
  176. data/.autotest +0 -16
  177. data/.document +0 -5
  178. data/History.txt +0 -594
  179. data/LICENSE.txt +0 -57
  180. data/Manifest.txt +0 -158
  181. data/README.txt +0 -45
  182. data/RI.txt +0 -58
  183. data/bin/ri +0 -5
  184. data/lib/rdoc/gauntlet.rb +0 -52
  185. data/lib/rdoc/generator/template/darkfish/classpage.rhtml +0 -296
  186. data/lib/rdoc/generator/template/darkfish/filepage.rhtml +0 -124
  187. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -32
  188. data/lib/rdoc/generator/template/darkfish/js/quicksearch.js +0 -114
  189. data/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js +0 -10
  190. data/lib/rdoc/generator/template/darkfish/rdoc.css +0 -706
  191. data/lib/rdoc/markup/formatter_test_case.rb +0 -689
  192. data/lib/rdoc/markup/inline.rb +0 -137
  193. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -116
  194. data/lib/rdoc/ruby_lex.rb +0 -1291
  195. data/lib/rdoc/ruby_token.rb +0 -416
  196. data/test/README +0 -1
  197. data/test/binary.dat +0 -0
  198. data/test/hidden.zip.txt +0 -1
  199. data/test/test.ja.rdoc +0 -10
  200. data/test/test.ja.txt +0 -8
  201. data/test/test.txt +0 -1
  202. data/test/test_attribute_manager.rb +0 -120
  203. data/test/test_rdoc_alias.rb +0 -13
  204. data/test/test_rdoc_any_method.rb +0 -126
  205. data/test/test_rdoc_attr.rb +0 -61
  206. data/test/test_rdoc_class_module.rb +0 -233
  207. data/test/test_rdoc_code_object.rb +0 -165
  208. data/test/test_rdoc_constant.rb +0 -15
  209. data/test/test_rdoc_context.rb +0 -370
  210. data/test/test_rdoc_encoding.rb +0 -166
  211. data/test/test_rdoc_generator_darkfish.rb +0 -119
  212. data/test/test_rdoc_generator_ri.rb +0 -76
  213. data/test/test_rdoc_include.rb +0 -96
  214. data/test/test_rdoc_markup.rb +0 -37
  215. data/test/test_rdoc_markup_attribute_manager.rb +0 -240
  216. data/test/test_rdoc_markup_document.rb +0 -51
  217. data/test/test_rdoc_markup_paragraph.rb +0 -9
  218. data/test/test_rdoc_markup_parser.rb +0 -1395
  219. data/test/test_rdoc_markup_pre_process.rb +0 -185
  220. data/test/test_rdoc_markup_raw.rb +0 -27
  221. data/test/test_rdoc_markup_to_ansi.rb +0 -328
  222. data/test/test_rdoc_markup_to_bs.rb +0 -341
  223. data/test/test_rdoc_markup_to_html.rb +0 -335
  224. data/test/test_rdoc_markup_to_html_crossref.rb +0 -169
  225. data/test/test_rdoc_markup_to_rdoc.rb +0 -327
  226. data/test/test_rdoc_method_attr.rb +0 -122
  227. data/test/test_rdoc_normal_class.rb +0 -17
  228. data/test/test_rdoc_normal_module.rb +0 -31
  229. data/test/test_rdoc_options.rb +0 -342
  230. data/test/test_rdoc_parser.rb +0 -83
  231. data/test/test_rdoc_parser_c.rb +0 -912
  232. data/test/test_rdoc_parser_ruby.rb +0 -1754
  233. data/test/test_rdoc_parser_simple.rb +0 -99
  234. data/test/test_rdoc_rdoc.rb +0 -164
  235. data/test/test_rdoc_require.rb +0 -25
  236. data/test/test_rdoc_ri_driver.rb +0 -846
  237. data/test/test_rdoc_ri_paths.rb +0 -43
  238. data/test/test_rdoc_ri_store.rb +0 -352
  239. data/test/test_rdoc_ruby_lex.rb +0 -23
  240. data/test/test_rdoc_stats.rb +0 -38
  241. data/test/test_rdoc_task.rb +0 -92
  242. data/test/test_rdoc_text.rb +0 -251
  243. data/test/test_rdoc_top_level.rb +0 -120
  244. data/test/xref_data.rb +0 -62
  245. data/test/xref_test_case.rb +0 -61
  246. data.tar.gz.sig +0 -3
  247. metadata.gz.sig +0 -0
data/lib/rdoc/task.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #--
2
3
  # Copyright (c) 2003, 2004 Jim Weirich, 2009 Eric Hodel
3
4
  #
@@ -21,25 +22,23 @@
21
22
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
23
  #++
23
24
 
24
- require 'rubygems'
25
25
  begin
26
26
  gem 'rdoc'
27
27
  rescue Gem::LoadError
28
- end
28
+ end unless defined?(RDoc)
29
29
 
30
30
  begin
31
31
  gem 'rake'
32
32
  rescue Gem::LoadError
33
- end
33
+ end unless defined?(Rake)
34
34
 
35
35
  require 'rdoc'
36
36
  require 'rake'
37
37
  require 'rake/tasklib'
38
38
 
39
39
  ##
40
- # Create a documentation task that will generate the RDoc files for a project.
41
- #
42
- # The RDoc::Task will create the following targets:
40
+ # RDoc::Task creates the following rake tasks to generate and clean up RDoc
41
+ # output:
43
42
  #
44
43
  # [rdoc]
45
44
  # Main task for this RDoc task.
@@ -53,15 +52,14 @@ require 'rake/tasklib'
53
52
  #
54
53
  # Simple Example:
55
54
  #
56
- # gem 'rdoc'
57
55
  # require 'rdoc/task'
58
56
  #
59
- # RDoc::Task.new do |rd|
60
- # rd.main = "README.rdoc"
61
- # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
57
+ # RDoc::Task.new do |rdoc|
58
+ # rdoc.main = "README.rdoc"
59
+ # rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb")
62
60
  # end
63
61
  #
64
- # The +rd+ object passed to the block is an RDoc::Task object. See the
62
+ # The +rdoc+ object passed to the block is an RDoc::Task object. See the
65
63
  # attributes list for the RDoc::Task class for available customization options.
66
64
  #
67
65
  # == Specifying different task names
@@ -70,13 +68,12 @@ require 'rake/tasklib'
70
68
  # generating two sets of documentation. For instance, if you want to have a
71
69
  # development set of documentation including private methods:
72
70
  #
73
- # gem 'rdoc'
74
71
  # require 'rdoc/task'
75
72
  #
76
- # RDoc::Task.new :rdoc_dev do |rd|
77
- # rd.main = "README.doc"
78
- # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
79
- # rd.options << "--all"
73
+ # RDoc::Task.new :rdoc_dev do |rdoc|
74
+ # rdoc.main = "README.doc"
75
+ # rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb")
76
+ # rdoc.options << "--all"
80
77
  # end
81
78
  #
82
79
  # The tasks would then be named :<em>rdoc_dev</em>,
@@ -88,7 +85,6 @@ require 'rake/tasklib'
88
85
  #
89
86
  # For example:
90
87
  #
91
- # gem 'rdoc'
92
88
  # require 'rdoc/task'
93
89
  #
94
90
  # RDoc::Task.new(:rdoc => "rdoc", :clobber_rdoc => "rdoc:clean",
@@ -104,6 +100,12 @@ class RDoc::Task < Rake::TaskLib
104
100
 
105
101
  attr_accessor :name
106
102
 
103
+ ##
104
+ # Comment markup format. rdoc, rd and tomdoc are supported. (default is
105
+ # 'rdoc')
106
+
107
+ attr_accessor :markup
108
+
107
109
  ##
108
110
  # Name of directory to receive the html output files. (default is "html")
109
111
 
@@ -126,7 +128,8 @@ class RDoc::Task < Rake::TaskLib
126
128
  attr_accessor :template
127
129
 
128
130
  ##
129
- # Name of format generator (--fmt) used by rdoc. (defaults to rdoc's default)
131
+ # Name of format generator (<tt>--format</tt>) used by rdoc. (defaults to
132
+ # rdoc's default)
130
133
 
131
134
  attr_accessor :generator
132
135
 
@@ -149,17 +152,45 @@ class RDoc::Task < Rake::TaskLib
149
152
  # Create an RDoc task with the given name. See the RDoc::Task class overview
150
153
  # for documentation.
151
154
 
152
- def initialize(name = :rdoc) # :yield: self
153
- if name.is_a? Hash then
154
- invalid_options = name.keys.map { |k| k.to_sym } -
155
- [:rdoc, :clobber_rdoc, :rerdoc]
155
+ def initialize name = :rdoc # :yield: self
156
+ defaults
156
157
 
157
- unless invalid_options.empty? then
158
- raise ArgumentError, "invalid options: #{invalid_options.join(", ")}"
159
- end
160
- end
158
+ check_names name
161
159
 
162
160
  @name = name
161
+
162
+ yield self if block_given?
163
+
164
+ define
165
+ end
166
+
167
+ ##
168
+ # Ensures that +names+ only includes names for the :rdoc, :clobber_rdoc and
169
+ # :rerdoc. If other names are given an ArgumentError is raised.
170
+
171
+ def check_names names
172
+ return unless Hash === names
173
+
174
+ invalid_options =
175
+ names.keys.map { |k| k.to_sym } - [:rdoc, :clobber_rdoc, :rerdoc]
176
+
177
+ unless invalid_options.empty? then
178
+ raise ArgumentError, "invalid options: #{invalid_options.join ', '}"
179
+ end
180
+ end
181
+
182
+ ##
183
+ # Task description for the clobber rdoc task or its renamed equivalent
184
+
185
+ def clobber_task_description
186
+ "Remove RDoc HTML files"
187
+ end
188
+
189
+ ##
190
+ # Sets default task values
191
+
192
+ def defaults
193
+ @name = :rdoc
163
194
  @rdoc_files = Rake::FileList.new
164
195
  @rdoc_dir = 'html'
165
196
  @main = nil
@@ -167,14 +198,12 @@ class RDoc::Task < Rake::TaskLib
167
198
  @template = nil
168
199
  @generator = nil
169
200
  @options = []
170
- yield self if block_given?
171
- define
172
201
  end
173
202
 
174
203
  ##
175
204
  # All source is inline now. This method is deprecated
176
205
 
177
- def inline_source() # :nodoc:
206
+ def inline_source # :nodoc:
178
207
  warn "RDoc::Task#inline_source is deprecated"
179
208
  true
180
209
  end
@@ -190,13 +219,13 @@ class RDoc::Task < Rake::TaskLib
190
219
  # Create the tasks defined by this task lib.
191
220
 
192
221
  def define
193
- desc "Build RDoc HTML files"
222
+ desc rdoc_task_description
194
223
  task rdoc_task_name
195
224
 
196
- desc "Rebuild RDoc HTML files"
225
+ desc rerdoc_task_description
197
226
  task rerdoc_task_name => [clobber_task_name, rdoc_task_name]
198
227
 
199
- desc "Remove RDoc HTML files"
228
+ desc clobber_task_description
200
229
  task clobber_task_name do
201
230
  rm_r @rdoc_dir rescue nil
202
231
  end
@@ -215,11 +244,8 @@ class RDoc::Task < Rake::TaskLib
215
244
  @before_running_rdoc.call if @before_running_rdoc
216
245
  args = option_list + @rdoc_files
217
246
 
218
- if Rake.application.options.trace then
219
- $stderr.puts "rdoc #{args.join ' '}"
220
- end
221
- require 'rdoc/rdoc'
222
- RDoc::RDoc.new.document(args)
247
+ $stderr.puts "rdoc #{args.join ' '}" if Rake.application.options.trace
248
+ RDoc::RDoc.new.document args
223
249
  end
224
250
 
225
251
  self
@@ -230,11 +256,12 @@ class RDoc::Task < Rake::TaskLib
230
256
 
231
257
  def option_list
232
258
  result = @options.dup
233
- result << "-o" << @rdoc_dir
234
- result << "--main" << main if main
235
- result << "--title" << title if title
236
- result << "-T" << template if template
237
- result << '-f' << generator if generator
259
+ result << "-o" << @rdoc_dir
260
+ result << "--main" << main if main
261
+ result << "--markup" << markup if markup
262
+ result << "--title" << title if title
263
+ result << "-T" << template if template
264
+ result << '-f' << generator if generator
238
265
  result
239
266
  end
240
267
 
@@ -247,10 +274,24 @@ class RDoc::Task < Rake::TaskLib
247
274
  @before_running_rdoc = block
248
275
  end
249
276
 
277
+ ##
278
+ # Task description for the rdoc task or its renamed equivalent
279
+
280
+ def rdoc_task_description
281
+ 'Build RDoc HTML files'
282
+ end
283
+
284
+ ##
285
+ # Task description for the rerdoc task or its renamed description
286
+
287
+ def rerdoc_task_description
288
+ "Rebuild RDoc HTML files"
289
+ end
290
+
250
291
  private
251
292
 
252
293
  def rdoc_target
253
- "#{rdoc_dir}/index.html"
294
+ "#{rdoc_dir}/created.rid"
254
295
  end
255
296
 
256
297
  def rdoc_task_name
@@ -286,4 +327,3 @@ module Rake
286
327
 
287
328
  end
288
329
  # :startdoc:
289
-
data/lib/rdoc/text.rb CHANGED
@@ -1,4 +1,4 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  ##
4
4
  # For RDoc::Text#to_html
@@ -10,6 +10,21 @@ require 'strscan'
10
10
 
11
11
  module RDoc::Text
12
12
 
13
+ attr_accessor :language
14
+
15
+ ##
16
+ # Maps markup formats to classes that can parse them. If the format is
17
+ # unknown, "rdoc" format is used.
18
+
19
+ MARKUP_FORMAT = {
20
+ 'markdown' => RDoc::Markdown,
21
+ 'rdoc' => RDoc::Markup,
22
+ 'rd' => RDoc::RD,
23
+ 'tomdoc' => RDoc::TomDoc,
24
+ }
25
+
26
+ MARKUP_FORMAT.default = RDoc::Markup
27
+
13
28
  ##
14
29
  # Maps an encoding to a Hash of characters properly transcoded for that
15
30
  # encoding.
@@ -28,7 +43,7 @@ module RDoc::Text
28
43
  :open_squote => encode_fallback('‘', encoding, '\''),
29
44
  :trademark => encode_fallback('®', encoding, '(r)'),
30
45
  }
31
- end if Object.const_defined? :Encoding
46
+ end
32
47
 
33
48
  ##
34
49
  # Transcodes +character+ to +encoding+ with a +fallback+ character.
@@ -45,9 +60,11 @@ module RDoc::Text
45
60
  expanded = []
46
61
 
47
62
  text.each_line do |line|
48
- line.gsub!(/^(.{8}*?)([^\t\r\n]{0,7})\t/) do
49
- "#{$1}#{$2}#{' ' * (8 - $2.size)}"
50
- end until line !~ /\t/
63
+ nil while line.gsub!(/(?:\G|\r)((?:.{8})*?)([^\t\r\n]{0,7})\t/) do
64
+ r = "#{$1}#{$2}#{' ' * (8 - $2.size)}"
65
+ r = RDoc::Encoding.change_encoding r, text.encoding
66
+ r
67
+ end
51
68
 
52
69
  expanded << line
53
70
  end
@@ -59,22 +76,17 @@ module RDoc::Text
59
76
  # Flush +text+ left based on the shortest line
60
77
 
61
78
  def flush_left text
62
- indents = []
79
+ indent = 9999
63
80
 
64
81
  text.each_line do |line|
65
- indents << (line =~ /[^\s]/ || 9999)
82
+ line_indent = line =~ /\S/ || 9999
83
+ indent = line_indent if indent > line_indent
66
84
  end
67
85
 
68
- indent = indents.min
69
-
70
- flush = []
71
-
72
- text.each_line do |line|
73
- line[/^ {0,#{indent}}/] = ''
74
- flush << line
75
- end
86
+ empty = ''
87
+ empty = RDoc::Encoding.change_encoding empty, text.encoding
76
88
 
77
- flush.join
89
+ text.gsub(/^ {0,#{indent}}/, empty)
78
90
  end
79
91
 
80
92
  ##
@@ -83,9 +95,16 @@ module RDoc::Text
83
95
  # Requires the including class to implement #formatter
84
96
 
85
97
  def markup text
86
- document = parse text
87
-
88
- document.accept formatter
98
+ if @store.rdoc.options
99
+ locale = @store.rdoc.options.locale
100
+ else
101
+ locale = nil
102
+ end
103
+ if locale
104
+ i18n_text = RDoc::I18n::Text.new(text)
105
+ text = i18n_text.translate(locale)
106
+ end
107
+ parse(text).accept formatter
89
108
  end
90
109
 
91
110
  ##
@@ -94,44 +113,39 @@ module RDoc::Text
94
113
  def normalize_comment text
95
114
  return text if text.empty?
96
115
 
97
- text = strip_hashes text
98
- text = expand_tabs text
99
- text = flush_left text
100
- strip_newlines text
116
+ case language
117
+ when :ruby
118
+ text = strip_hashes text
119
+ when :c
120
+ text = strip_stars text
121
+ end
122
+ text = expand_tabs text
123
+ text = flush_left text
124
+ text = strip_newlines text
125
+ text
101
126
  end
102
127
 
103
128
  ##
104
129
  # Normalizes +text+ then builds a RDoc::Markup::Document from it
105
130
 
106
- def parse text
131
+ def parse text, format = 'rdoc'
107
132
  return text if RDoc::Markup::Document === text
133
+ return text.parse if RDoc::Comment === text
108
134
 
109
- text = normalize_comment text
135
+ text = normalize_comment text # TODO remove, should not be necessary
110
136
 
111
137
  return RDoc::Markup::Document.new if text =~ /\A\n*\z/
112
138
 
113
- RDoc::Markup::Parser.parse text
114
- rescue RDoc::Markup::Parser::Error => e
115
- $stderr.puts <<-EOF
116
- While parsing markup, RDoc encountered a #{e.class}:
117
-
118
- #{e}
119
- \tfrom #{e.backtrace.join "\n\tfrom "}
120
-
121
- ---8<---
122
- #{text}
123
- ---8<---
124
-
125
- RDoc #{RDoc::VERSION}
126
-
127
- Ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} #{RUBY_RELEASE_DATE}
139
+ MARKUP_FORMAT[format].parse text
140
+ end
128
141
 
129
- Please file a bug report with the above information at:
142
+ ##
143
+ # The first +limit+ characters of +text+ as HTML
130
144
 
131
- http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse
145
+ def snippet text, limit = 100
146
+ document = parse text
132
147
 
133
- EOF
134
- raise
148
+ RDoc::Markup::ToHtmlSnippet.new(options, limit).convert document
135
149
  end
136
150
 
137
151
  ##
@@ -139,25 +153,40 @@ http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse
139
153
 
140
154
  def strip_hashes text
141
155
  return text if text =~ /^(?>\s*)[^\#]/
142
- text.gsub(/^\s*(#+)/) { $1.tr '#',' ' }.gsub(/^\s+$/, '')
156
+
157
+ empty = ''
158
+ empty = RDoc::Encoding.change_encoding empty, text.encoding
159
+
160
+ text.gsub(/^\s*(#+)/) { $1.tr '#', ' ' }.gsub(/^\s+$/, empty)
143
161
  end
144
162
 
145
163
  ##
146
164
  # Strips leading and trailing \n characters from +text+
147
165
 
148
166
  def strip_newlines text
149
- text.gsub(/\A\n*(.*?)\n*\z/m, '\1')
167
+ text.gsub(/\A\n*(.*?)\n*\z/m) do $1 end # block preserves String encoding
150
168
  end
151
169
 
152
170
  ##
153
171
  # Strips /* */ style comments
154
172
 
155
173
  def strip_stars text
156
- text = text.gsub %r%Document-method:\s+[\w:.#]+%, ''
157
- text.sub! %r%/\*+% do " " * $&.length end
158
- text.sub! %r%\*+/% do " " * $&.length end
159
- text.gsub! %r%^[ \t]*\*%m do " " * $&.length end
160
- text.gsub(/^\s+$/, '')
174
+ return text unless text =~ %r%/\*.*\*/%m
175
+
176
+ encoding = text.encoding
177
+
178
+ text = text.gsub %r%Document-method:\s+[\w:.#=!?|^&<>~+\-/*\%@`\[\]]+%, ''
179
+
180
+ space = ' '
181
+ space = RDoc::Encoding.change_encoding space, encoding if encoding
182
+
183
+ text.sub! %r%/\*+% do space * $&.length end
184
+ text.sub! %r%\*+/% do space * $&.length end
185
+ text.gsub! %r%^[ \t]*\*%m do space * $&.length end
186
+
187
+ empty = ''
188
+ empty = RDoc::Encoding.change_encoding empty, encoding if encoding
189
+ text.gsub(/^\s+$/, empty)
161
190
  end
162
191
 
163
192
  ##
@@ -165,24 +194,9 @@ http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse
165
194
  # trademark symbols in +text+ to properly encoded characters.
166
195
 
167
196
  def to_html text
168
- if Object.const_defined? :Encoding then
169
- html = ''.encode text.encoding
197
+ html = (''.encode text.encoding).dup
170
198
 
171
- encoded = RDoc::Text::TO_HTML_CHARACTERS[text.encoding]
172
- else
173
- html = ''
174
- encoded = {
175
- :close_dquote => '”',
176
- :close_squote => '’',
177
- :copyright => '©',
178
- :ellipsis => '…',
179
- :em_dash => '—',
180
- :en_dash => '–',
181
- :open_dquote => '“',
182
- :open_squote => '‘',
183
- :trademark => '®',
184
- }
185
- end
199
+ encoded = RDoc::Text::TO_HTML_CHARACTERS[text.encoding]
186
200
 
187
201
  s = StringScanner.new text
188
202
  insquotes = false
@@ -191,10 +205,10 @@ http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse
191
205
 
192
206
  until s.eos? do
193
207
  case
194
- when s.scan(/<tt>.*?<\/tt>/) then # skip contents of tt
208
+ when s.scan(/<(tt|code)>.*?<\/\1>/) then # skip contents of tt
195
209
  html << s.matched.gsub('\\\\', '\\')
196
- when s.scan(/<tt>.*?/) then
197
- warn 'mismatched <tt> tag' # TODO signal file/line
210
+ when s.scan(/<(tt|code)>.*?/) then
211
+ warn "mismatched <#{s[1]}> tag" # TODO signal file/line
198
212
  html << s.matched
199
213
  when s.scan(/<[^>]+\/?s*>/) then # skip HTML tags
200
214
  html << s.matched
@@ -255,5 +269,36 @@ http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse
255
269
  html
256
270
  end
257
271
 
258
- end
272
+ ##
273
+ # Wraps +txt+ to +line_len+
274
+
275
+ def wrap(txt, line_len = 76)
276
+ res = []
277
+ sp = 0
278
+ ep = txt.length
279
+
280
+ while sp < ep
281
+ # scan back for a space
282
+ p = sp + line_len - 1
283
+ if p >= ep
284
+ p = ep
285
+ else
286
+ while p > sp and txt[p] != ?\s
287
+ p -= 1
288
+ end
289
+ if p <= sp
290
+ p = sp + line_len
291
+ while p < ep and txt[p] != ?\s
292
+ p += 1
293
+ end
294
+ end
295
+ end
296
+ res << txt[sp...p] << "\n"
297
+ sp = p
298
+ sp += 1 while sp < ep and txt[sp] == ?\s
299
+ end
259
300
 
301
+ res.join.strip
302
+ end
303
+
304
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  ##
2
3
  # A TokenStream is a list of tokens, gathered during the parse of some entity
3
4
  # (say a method). Entities populate these streams by being registered with the
@@ -7,14 +8,82 @@
7
8
 
8
9
  module RDoc::TokenStream
9
10
 
11
+ ##
12
+ # Converts +token_stream+ to HTML wrapping various tokens with
13
+ # <tt><span></tt> elements. Some tokens types are wrapped in spans
14
+ # with the given class names. Other token types are not wrapped in spans.
15
+
16
+ def self.to_html token_stream
17
+ starting_title = false
18
+
19
+ token_stream.map do |t|
20
+ next unless t
21
+
22
+ style = case t[:kind]
23
+ when :on_const then 'ruby-constant'
24
+ when :on_kw then 'ruby-keyword'
25
+ when :on_ivar then 'ruby-ivar'
26
+ when :on_cvar then 'ruby-identifier'
27
+ when :on_gvar then 'ruby-identifier'
28
+ when '=' != t[:text] && :on_op
29
+ then 'ruby-operator'
30
+ when :on_tlambda then 'ruby-operator'
31
+ when :on_ident then 'ruby-identifier'
32
+ when :on_label then 'ruby-value'
33
+ when :on_backref, :on_dstring
34
+ then 'ruby-node'
35
+ when :on_comment then 'ruby-comment'
36
+ when :on_embdoc then 'ruby-comment'
37
+ when :on_regexp then 'ruby-regexp'
38
+ when :on_tstring then 'ruby-string'
39
+ when :on_int, :on_float,
40
+ :on_rational, :on_imaginary,
41
+ :on_heredoc,
42
+ :on_symbol, :on_CHAR then 'ruby-value'
43
+ when :on_heredoc_beg, :on_heredoc_end
44
+ then 'ruby-identifier'
45
+ end
46
+
47
+ comment_with_nl = false
48
+ if :on_comment == t[:kind] or :on_embdoc == t[:kind] or :on_heredoc_end == t[:kind]
49
+ comment_with_nl = true if "\n" == t[:text][-1]
50
+ text = t[:text].rstrip
51
+ else
52
+ text = t[:text]
53
+ end
54
+
55
+ if :on_ident == t[:kind] && starting_title
56
+ starting_title = false
57
+ style = 'ruby-identifier ruby-title'
58
+ end
59
+
60
+ if :on_kw == t[:kind] and 'def' == t[:text]
61
+ starting_title = true
62
+ end
63
+
64
+ text = CGI.escapeHTML text
65
+
66
+ if style then
67
+ "<span class=\"#{style}\">#{text}</span>#{"\n" if comment_with_nl}"
68
+ else
69
+ text
70
+ end
71
+ end.join
72
+ end
73
+
10
74
  ##
11
75
  # Adds +tokens+ to the collected tokens
12
76
 
13
- def add_tokens(*tokens)
14
- tokens.flatten.each { |token| @token_stream << token }
77
+ def add_tokens(tokens)
78
+ @token_stream.concat(tokens)
15
79
  end
16
80
 
17
- alias add_token add_tokens
81
+ ##
82
+ # Adds one +token+ to the collected tokens
83
+
84
+ def add_token(token)
85
+ @token_stream.push(token)
86
+ end
18
87
 
19
88
  ##
20
89
  # Starts collecting tokens
@@ -43,7 +112,7 @@ module RDoc::TokenStream
43
112
  # Returns a string representation of the token stream
44
113
 
45
114
  def tokens_to_s
46
- token_stream.map { |token| token.text }.join ''
115
+ token_stream.compact.map { |token| token[:text] }.join ''
47
116
  end
48
117
 
49
118
  end