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
@@ -1,12 +1,20 @@
1
- require 'rdoc/method_attr'
2
- require 'rdoc/token_stream'
3
-
1
+ # frozen_string_literal: true
4
2
  ##
5
3
  # AnyMethod is the base class for objects representing methods
6
4
 
7
5
  class RDoc::AnyMethod < RDoc::MethodAttr
8
6
 
9
- MARSHAL_VERSION = 0 # :nodoc:
7
+ ##
8
+ # 2::
9
+ # RDoc 4
10
+ # Added calls_super
11
+ # Added parent name and class
12
+ # Added section title
13
+ # 3::
14
+ # RDoc 4.1
15
+ # Added is_alias_for
16
+
17
+ MARSHAL_VERSION = 3 # :nodoc:
10
18
 
11
19
  ##
12
20
  # Don't rename \#initialize to \::new
@@ -14,15 +22,19 @@ class RDoc::AnyMethod < RDoc::MethodAttr
14
22
  attr_accessor :dont_rename_initialize
15
23
 
16
24
  ##
17
- # Different ways to call this method
25
+ # The C function that implements this method (if it was defined in a C file)
18
26
 
19
- attr_accessor :call_seq
27
+ attr_accessor :c_function
20
28
 
21
- ##
22
29
  # Parameters for this method
23
30
 
24
31
  attr_accessor :params
25
32
 
33
+ ##
34
+ # If true this method uses +super+ to call a superclass version
35
+
36
+ attr_accessor :calls_super
37
+
26
38
  include RDoc::TokenStream
27
39
 
28
40
  ##
@@ -31,14 +43,17 @@ class RDoc::AnyMethod < RDoc::MethodAttr
31
43
  def initialize text, name
32
44
  super
33
45
 
46
+ @c_function = nil
34
47
  @dont_rename_initialize = false
35
- @token_stream = nil
48
+ @token_stream = nil
49
+ @calls_super = false
50
+ @superclass_method = nil
36
51
  end
37
52
 
38
53
  ##
39
54
  # Adds +an_alias+ as an alias for this method in +context+.
40
55
 
41
- def add_alias(an_alias, context)
56
+ def add_alias an_alias, context = nil
42
57
  method = self.class.new an_alias.text, an_alias.new_name
43
58
 
44
59
  method.record_location an_alias.file
@@ -48,7 +63,7 @@ class RDoc::AnyMethod < RDoc::MethodAttr
48
63
  method.comment = an_alias.comment
49
64
  method.is_alias_for = self
50
65
  @aliases << method
51
- context.add_method method
66
+ context.add_method method if context
52
67
  method
53
68
  end
54
69
 
@@ -72,14 +87,64 @@ class RDoc::AnyMethod < RDoc::MethodAttr
72
87
  end
73
88
  end
74
89
 
90
+ ##
91
+ # Different ways to call this method
92
+
93
+ def call_seq
94
+ unless call_seq = _call_seq
95
+ call_seq = is_alias_for._call_seq if is_alias_for
96
+ end
97
+
98
+ return unless call_seq
99
+
100
+ deduplicate_call_seq(call_seq)
101
+ end
102
+
103
+ ##
104
+ # Sets the different ways you can call this method. If an empty +call_seq+
105
+ # is given nil is assumed.
106
+ #
107
+ # See also #param_seq
108
+
109
+ def call_seq= call_seq
110
+ return if call_seq.empty?
111
+
112
+ @call_seq = call_seq
113
+ end
114
+
115
+ ##
116
+ # Loads is_alias_for from the internal name. Returns nil if the alias
117
+ # cannot be found.
118
+
119
+ def is_alias_for # :nodoc:
120
+ case @is_alias_for
121
+ when RDoc::MethodAttr then
122
+ @is_alias_for
123
+ when Array then
124
+ return nil unless @store
125
+
126
+ klass_name, singleton, method_name = @is_alias_for
127
+
128
+ return nil unless klass = @store.find_class_or_module(klass_name)
129
+
130
+ @is_alias_for = klass.find_method method_name, singleton
131
+ end
132
+ end
133
+
75
134
  ##
76
135
  # Dumps this AnyMethod for use by ri. See also #marshal_load
77
136
 
78
137
  def marshal_dump
79
138
  aliases = @aliases.map do |a|
80
- [a.full_name, parse(a.comment)]
139
+ [a.name, parse(a.comment)]
81
140
  end
82
141
 
142
+ is_alias_for = [
143
+ @is_alias_for.parent.full_name,
144
+ @is_alias_for.singleton,
145
+ @is_alias_for.name
146
+ ] if @is_alias_for
147
+
83
148
  [ MARSHAL_VERSION,
84
149
  @name,
85
150
  full_name,
@@ -90,6 +155,12 @@ class RDoc::AnyMethod < RDoc::MethodAttr
90
155
  @block_params,
91
156
  aliases,
92
157
  @params,
158
+ @file.relative_name,
159
+ @calls_super,
160
+ @parent.name,
161
+ @parent.class,
162
+ @section.title,
163
+ is_alias_for,
93
164
  ]
94
165
  end
95
166
 
@@ -100,32 +171,48 @@ class RDoc::AnyMethod < RDoc::MethodAttr
100
171
  # * #full_name
101
172
  # * #parent_name
102
173
 
103
- def marshal_load(array)
174
+ def marshal_load array
175
+ initialize_visibility
176
+
104
177
  @dont_rename_initialize = nil
105
- @is_alias_for = nil
106
178
  @token_stream = nil
107
179
  @aliases = []
108
-
109
- @name = array[1]
110
- @full_name = array[2]
111
- @singleton = array[3]
112
- @visibility = array[4]
113
- @comment = array[5]
114
- @call_seq = array[6]
115
- @block_params = array[7]
116
- @params = array[9]
117
-
118
- @parent_name = if @full_name =~ /#/ then
119
- $`
120
- else
121
- name = @full_name.split('::')
122
- name.pop
123
- name.join '::'
124
- end
180
+ @parent = nil
181
+ @parent_name = nil
182
+ @parent_class = nil
183
+ @section = nil
184
+ @file = nil
185
+
186
+ version = array[0]
187
+ @name = array[1]
188
+ @full_name = array[2]
189
+ @singleton = array[3]
190
+ @visibility = array[4]
191
+ @comment = array[5]
192
+ @call_seq = array[6]
193
+ @block_params = array[7]
194
+ # 8 handled below
195
+ @params = array[9]
196
+ # 10 handled below
197
+ @calls_super = array[11]
198
+ @parent_name = array[12]
199
+ @parent_title = array[13]
200
+ @section_title = array[14]
201
+ @is_alias_for = array[15]
125
202
 
126
203
  array[8].each do |new_name, comment|
127
204
  add_alias RDoc::Alias.new(nil, @name, new_name, comment, @singleton)
128
205
  end
206
+
207
+ @parent_name ||= if @full_name =~ /#/ then
208
+ $`
209
+ else
210
+ name = @full_name.split('::')
211
+ name.pop
212
+ name.join '::'
213
+ end
214
+
215
+ @file = RDoc::TopLevel.new array[10] if version > 0
129
216
  end
130
217
 
131
218
  ##
@@ -136,26 +223,69 @@ class RDoc::AnyMethod < RDoc::MethodAttr
136
223
  def name
137
224
  return @name if @name
138
225
 
139
- @name = @call_seq[/^.*?\.(\w+)/, 1] || @call_seq if @call_seq
226
+ @name =
227
+ @call_seq[/^.*?\.(\w+)/, 1] ||
228
+ @call_seq[/^.*?(\w+)/, 1] ||
229
+ @call_seq if @call_seq
140
230
  end
141
231
 
142
232
  ##
143
- # Pretty parameter list for this method
233
+ # A list of this method's method and yield parameters. +call-seq+ params
234
+ # are preferred over parsed method and block params.
235
+
236
+ def param_list
237
+ if @call_seq then
238
+ params = @call_seq.split("\n").last
239
+ params = params.sub(/.*?\((.*)\)/, '\1')
240
+ params = params.sub(/(\{|do)\s*\|([^|]*)\|.*/, ',\2')
241
+ elsif @params then
242
+ params = @params.sub(/\((.*)\)/, '\1')
243
+
244
+ params << ",#{@block_params}" if @block_params
245
+ elsif @block_params then
246
+ params = @block_params
247
+ else
248
+ return []
249
+ end
250
+
251
+ if @block_params then
252
+ # If this method has explicit block parameters, remove any explicit
253
+ # &block
254
+ params = params.sub(/,?\s*&\w+/, '')
255
+ else
256
+ params = params.sub(/\&(\w+)/, '\1')
257
+ end
258
+
259
+ params = params.gsub(/\s+/, '').split(',').reject(&:empty?)
260
+
261
+ params.map { |param| param.sub(/=.*/, '') }
262
+ end
263
+
264
+ ##
265
+ # Pretty parameter list for this method. If the method's parameters were
266
+ # given by +call-seq+ it is preferred over the parsed values.
144
267
 
145
268
  def param_seq
146
- params = @params.gsub(/\s*\#.*/, '')
147
- params = params.tr("\n", " ").squeeze(" ")
148
- params = "(#{params})" unless params[0] == ?(
269
+ if @call_seq then
270
+ params = @call_seq.split("\n").last
271
+ params = params.sub(/[^( ]+/, '')
272
+ params = params.sub(/(\|[^|]+\|)\s*\.\.\.\s*(end|\})/, '\1 \2')
273
+ elsif @params then
274
+ params = @params.gsub(/\s*\#.*/, '')
275
+ params = params.tr_s("\n ", " ")
276
+ params = "(#{params})" unless params[0] == ?(
277
+ else
278
+ params = ''
279
+ end
149
280
 
150
281
  if @block_params then
151
282
  # If this method has explicit block parameters, remove any explicit
152
283
  # &block
153
- params.sub!(/,?\s*&\w+/, '')
284
+ params = params.sub(/,?\s*&\w+/, '')
154
285
 
155
- block = @block_params.gsub(/\s*\#.*/, '')
156
- block = block.tr("\n", " ").squeeze(" ")
286
+ block = @block_params.tr_s("\n ", " ")
157
287
  if block[0] == ?(
158
- block.sub!(/^\(/, '').sub!(/\)/, '')
288
+ block = block.sub(/^\(/, '').sub(/\)/, '')
159
289
  end
160
290
  params << " { |#{block}| ... }"
161
291
  end
@@ -163,5 +293,69 @@ class RDoc::AnyMethod < RDoc::MethodAttr
163
293
  params
164
294
  end
165
295
 
166
- end
296
+ ##
297
+ # Sets the store for this method and its referenced code objects.
298
+
299
+ def store= store
300
+ super
301
+
302
+ @file = @store.add_file @file.full_name if @file
303
+ end
304
+
305
+ ##
306
+ # For methods that +super+, find the superclass method that would be called.
307
+
308
+ def superclass_method
309
+ return unless @calls_super
310
+ return @superclass_method if @superclass_method
311
+
312
+ parent.each_ancestor do |ancestor|
313
+ if method = ancestor.method_list.find { |m| m.name == @name } then
314
+ @superclass_method = method
315
+ break
316
+ end
317
+ end
318
+
319
+ @superclass_method
320
+ end
321
+
322
+ protected
167
323
 
324
+ ##
325
+ # call_seq without deduplication and alias lookup.
326
+
327
+ def _call_seq
328
+ @call_seq if defined?(@call_seq) && @call_seq
329
+ end
330
+
331
+ private
332
+
333
+ ##
334
+ # call_seq with alias examples information removed, if this
335
+ # method is an alias method.
336
+
337
+ def deduplicate_call_seq(call_seq)
338
+ return call_seq unless is_alias_for || !aliases.empty?
339
+
340
+ method_name = self.name
341
+ method_name = method_name[0, 1] if method_name =~ /\A\[/
342
+
343
+ entries = call_seq.split "\n"
344
+
345
+ ignore = aliases.map(&:name)
346
+ if is_alias_for
347
+ ignore << is_alias_for.name
348
+ ignore.concat is_alias_for.aliases.map(&:name)
349
+ end
350
+ ignore.map! { |n| n =~ /\A\[/ ? n[0, 1] : n}
351
+ ignore.delete(method_name)
352
+ ignore = Regexp.union(ignore)
353
+
354
+ matching = entries.reject do |entry|
355
+ entry =~ /^\w*\.?#{ignore}/ or
356
+ entry =~ /\s#{ignore}\s/
357
+ end
358
+
359
+ matching.join "\n"
360
+ end
361
+ end
data/lib/rdoc/attr.rb CHANGED
@@ -1,12 +1,17 @@
1
- require 'rdoc/method_attr'
2
-
1
+ # frozen_string_literal: true
3
2
  ##
4
3
  # An attribute created by \#attr, \#attr_reader, \#attr_writer or
5
4
  # \#attr_accessor
6
5
 
7
6
  class RDoc::Attr < RDoc::MethodAttr
8
7
 
9
- MARSHAL_VERSION = 1 # :nodoc:
8
+ ##
9
+ # 3::
10
+ # RDoc 4
11
+ # Added parent name and class
12
+ # Added section title
13
+
14
+ MARSHAL_VERSION = 3 # :nodoc:
10
15
 
11
16
  ##
12
17
  # Is the attribute readable ('R'), writable ('W') or both ('RW')?
@@ -57,6 +62,16 @@ class RDoc::Attr < RDoc::MethodAttr
57
62
  'attribute'
58
63
  end
59
64
 
65
+ ##
66
+ # Attributes never call super. See RDoc::AnyMethod#calls_super
67
+ #
68
+ # An RDoc::Attr can show up in the method list in some situations (see
69
+ # Gem::ConfigFile)
70
+
71
+ def calls_super # :nodoc:
72
+ false
73
+ end
74
+
60
75
  ##
61
76
  # Returns attr_reader, attr_writer or attr_accessor as appropriate.
62
77
 
@@ -68,6 +83,19 @@ class RDoc::Attr < RDoc::MethodAttr
68
83
  end
69
84
  end
70
85
 
86
+ def inspect # :nodoc:
87
+ alias_for = @is_alias_for ? " (alias for #{@is_alias_for.name})" : nil
88
+ visibility = self.visibility
89
+ visibility = "forced #{visibility}" if force_documentation
90
+ "#<%s:0x%x %s %s (%s)%s>" % [
91
+ self.class, object_id,
92
+ full_name,
93
+ rw,
94
+ visibility,
95
+ alias_for,
96
+ ]
97
+ end
98
+
71
99
  ##
72
100
  # Dumps this Attr for use by ri. See also #marshal_load
73
101
 
@@ -79,6 +107,10 @@ class RDoc::Attr < RDoc::MethodAttr
79
107
  @visibility,
80
108
  parse(@comment),
81
109
  singleton,
110
+ @file.relative_name,
111
+ @parent.full_name,
112
+ @parent.class,
113
+ @section.title
82
114
  ]
83
115
  end
84
116
 
@@ -90,19 +122,55 @@ class RDoc::Attr < RDoc::MethodAttr
90
122
  # * #parent_name
91
123
 
92
124
  def marshal_load array
93
- @name = array[1]
94
- @full_name = array[2]
95
- @rw = array[3]
96
- @visibility = array[4]
97
- @comment = array[5]
98
- @singleton = array[6] || false # MARSHAL_VERSION == 0
99
-
100
- @parent_name = @full_name
125
+ initialize_visibility
126
+
127
+ @aliases = []
128
+ @parent = nil
129
+ @parent_name = nil
130
+ @parent_class = nil
131
+ @section = nil
132
+ @file = nil
133
+
134
+ version = array[0]
135
+ @name = array[1]
136
+ @full_name = array[2]
137
+ @rw = array[3]
138
+ @visibility = array[4]
139
+ @comment = array[5]
140
+ @singleton = array[6] || false # MARSHAL_VERSION == 0
141
+ # 7 handled below
142
+ @parent_name = array[8]
143
+ @parent_class = array[9]
144
+ @section_title = array[10]
145
+
146
+ @file = RDoc::TopLevel.new array[7] if version > 1
147
+
148
+ @parent_name ||= @full_name.split('#', 2).first
149
+ end
150
+
151
+ def pretty_print q # :nodoc:
152
+ q.group 2, "[#{self.class.name} #{full_name} #{rw} #{visibility}", "]" do
153
+ unless comment.empty? then
154
+ q.breakable
155
+ q.text "comment:"
156
+ q.breakable
157
+ q.pp @comment
158
+ end
159
+ end
101
160
  end
102
161
 
103
162
  def to_s # :nodoc:
104
163
  "#{definition} #{name} in: #{parent}"
105
164
  end
106
165
 
166
+ ##
167
+ # Attributes do not have token streams.
168
+ #
169
+ # An RDoc::Attr can show up in the method list in some situations (see
170
+ # Gem::ConfigFile)
171
+
172
+ def token_stream # :nodoc:
173
+ end
174
+
107
175
  end
108
176