rdoc 2.4.3 → 2.5

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 (139) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +3 -1
  3. data/History.txt +68 -0
  4. data/LICENSE.txt +57 -0
  5. data/Manifest.txt +37 -19
  6. data/README.txt +2 -12
  7. data/Rakefile +12 -12
  8. data/bin/rdoc +4 -4
  9. data/lib/rdoc.rb +32 -9
  10. data/lib/rdoc/alias.rb +2 -2
  11. data/lib/rdoc/any_method.rb +108 -16
  12. data/lib/rdoc/attr.rb +87 -1
  13. data/lib/rdoc/class_module.rb +131 -5
  14. data/lib/rdoc/code_object.rb +28 -5
  15. data/lib/rdoc/constant.rb +22 -0
  16. data/lib/rdoc/context.rb +80 -37
  17. data/lib/rdoc/gauntlet.rb +48 -0
  18. data/lib/rdoc/generator/darkfish.rb +25 -23
  19. data/lib/rdoc/generator/markup.rb +6 -29
  20. data/lib/rdoc/generator/ri.rb +39 -189
  21. data/lib/rdoc/generator/template/darkfish/classpage.rhtml +17 -1
  22. data/lib/rdoc/generator/template/darkfish/filepage.rhtml +10 -0
  23. data/lib/rdoc/generator/template/darkfish/images/brick.png +0 -0
  24. data/lib/rdoc/generator/template/darkfish/images/brick_link.png +0 -0
  25. data/lib/rdoc/generator/template/darkfish/images/bullet_black.png +0 -0
  26. data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png +0 -0
  27. data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png +0 -0
  28. data/lib/rdoc/generator/template/darkfish/images/date.png +0 -0
  29. data/lib/rdoc/generator/template/darkfish/images/find.png +0 -0
  30. data/lib/rdoc/generator/template/darkfish/images/package.png +0 -0
  31. data/lib/rdoc/generator/template/darkfish/images/page_green.png +0 -0
  32. data/lib/rdoc/generator/template/darkfish/images/page_white_text.png +0 -0
  33. data/lib/rdoc/generator/template/darkfish/images/page_white_width.png +0 -0
  34. data/lib/rdoc/generator/template/darkfish/images/plugin.png +0 -0
  35. data/lib/rdoc/generator/template/darkfish/images/ruby.png +0 -0
  36. data/lib/rdoc/generator/template/darkfish/images/tag_green.png +0 -0
  37. data/lib/rdoc/generator/template/darkfish/images/wrench.png +0 -0
  38. data/lib/rdoc/generator/template/darkfish/images/wrench_orange.png +0 -0
  39. data/lib/rdoc/generator/template/darkfish/images/zoom.png +0 -0
  40. data/lib/rdoc/generator/template/darkfish/index.rhtml +2 -2
  41. data/lib/rdoc/generator/template/darkfish/rdoc.css +38 -33
  42. data/lib/rdoc/include.rb +22 -0
  43. data/lib/rdoc/markup.rb +10 -262
  44. data/lib/rdoc/markup/attribute_manager.rb +57 -50
  45. data/lib/rdoc/markup/blank_line.rb +19 -0
  46. data/lib/rdoc/markup/document.rb +72 -0
  47. data/lib/rdoc/markup/formatter.rb +118 -0
  48. data/lib/rdoc/markup/formatter_test_case.rb +341 -0
  49. data/lib/rdoc/markup/heading.rb +17 -0
  50. data/lib/rdoc/markup/inline.rb +6 -5
  51. data/lib/rdoc/markup/list.rb +78 -0
  52. data/lib/rdoc/markup/list_item.rb +83 -0
  53. data/lib/rdoc/markup/paragraph.rb +66 -0
  54. data/lib/rdoc/markup/parser.rb +528 -0
  55. data/lib/rdoc/markup/rule.rb +17 -0
  56. data/lib/rdoc/markup/to_ansi.rb +72 -0
  57. data/lib/rdoc/markup/to_bs.rb +74 -0
  58. data/lib/rdoc/markup/to_html.rb +106 -172
  59. data/lib/rdoc/markup/to_html_crossref.rb +10 -4
  60. data/lib/rdoc/markup/to_rdoc.rb +243 -0
  61. data/lib/rdoc/markup/to_test.rb +27 -16
  62. data/lib/rdoc/markup/verbatim.rb +42 -0
  63. data/lib/rdoc/normal_class.rb +38 -1
  64. data/lib/rdoc/normal_module.rb +38 -8
  65. data/lib/rdoc/options.rb +39 -151
  66. data/lib/rdoc/parser.rb +36 -18
  67. data/lib/rdoc/parser/c.rb +102 -109
  68. data/lib/rdoc/parser/ruby.rb +359 -1662
  69. data/lib/rdoc/parser/ruby_tools.rb +157 -0
  70. data/lib/rdoc/parser/simple.rb +0 -2
  71. data/lib/rdoc/rdoc.rb +142 -82
  72. data/lib/rdoc/ri.rb +10 -0
  73. data/lib/rdoc/ri/driver.rb +674 -444
  74. data/lib/rdoc/ri/formatter.rb +2 -651
  75. data/lib/rdoc/ri/paths.rb +70 -45
  76. data/lib/rdoc/ri/store.rb +248 -0
  77. data/lib/rdoc/ruby_lex.rb +1284 -0
  78. data/lib/rdoc/ruby_token.rb +416 -0
  79. data/lib/rdoc/single_class.rb +5 -0
  80. data/lib/rdoc/stats.rb +152 -83
  81. data/lib/rdoc/task.rb +27 -49
  82. data/lib/rdoc/text.rb +130 -0
  83. data/lib/rdoc/tokenstream.rb +28 -9
  84. data/lib/rdoc/top_level.rb +49 -43
  85. data/test/hidden.zip.txt +1 -0
  86. data/test/test_attribute_manager.rb +9 -16
  87. data/test/test_rdoc_any_method.rb +23 -0
  88. data/test/test_rdoc_attr.rb +40 -0
  89. data/test/test_rdoc_class_module.rb +100 -0
  90. data/test/test_rdoc_code_object.rb +18 -2
  91. data/test/test_rdoc_context.rb +41 -0
  92. data/test/test_rdoc_generator_ri.rb +56 -0
  93. data/test/test_rdoc_markup.rb +21 -610
  94. data/test/test_rdoc_markup_attribute_manager.rb +14 -17
  95. data/test/test_rdoc_markup_document.rb +51 -0
  96. data/test/test_rdoc_markup_paragraph.rb +27 -0
  97. data/test/test_rdoc_markup_parser.rb +1327 -0
  98. data/test/test_rdoc_markup_to_ansi.rb +426 -0
  99. data/test/test_rdoc_markup_to_bs.rb +443 -0
  100. data/test/test_rdoc_markup_to_html.rb +183 -18
  101. data/test/test_rdoc_markup_to_html_crossref.rb +1 -3
  102. data/test/test_rdoc_markup_to_rdoc.rb +426 -0
  103. data/test/test_rdoc_normal_class.rb +17 -0
  104. data/test/test_rdoc_normal_module.rb +6 -6
  105. data/test/test_rdoc_options.rb +41 -0
  106. data/test/test_rdoc_parser.rb +66 -13
  107. data/test/test_rdoc_parser_c.rb +93 -38
  108. data/test/test_rdoc_parser_perl.rb +2 -3
  109. data/test/test_rdoc_parser_ruby.rb +291 -28
  110. data/test/test_rdoc_parser_simple.rb +48 -0
  111. data/test/test_rdoc_rdoc.rb +66 -0
  112. data/test/test_rdoc_ri_driver.rb +752 -38
  113. data/test/test_rdoc_ri_paths.rb +39 -0
  114. data/test/test_rdoc_ri_store.rb +309 -0
  115. data/test/test_rdoc_text.rb +157 -0
  116. data/test/test_rdoc_top_level.rb +35 -9
  117. data/test/xref_data.rb +9 -1
  118. data/test/xref_test_case.rb +8 -3
  119. metadata +110 -38
  120. metadata.gz.sig +0 -0
  121. data/lib/rdoc/cache.rb +0 -41
  122. data/lib/rdoc/diagram.rb +0 -340
  123. data/lib/rdoc/dot.rb +0 -249
  124. data/lib/rdoc/markup/fragments.rb +0 -377
  125. data/lib/rdoc/markup/lines.rb +0 -156
  126. data/lib/rdoc/markup/to_flow.rb +0 -211
  127. data/lib/rdoc/markup/to_latex.rb +0 -328
  128. data/lib/rdoc/markup/to_texinfo.rb +0 -73
  129. data/lib/rdoc/ri/cache.rb +0 -187
  130. data/lib/rdoc/ri/descriptions.rb +0 -156
  131. data/lib/rdoc/ri/display.rb +0 -340
  132. data/lib/rdoc/ri/reader.rb +0 -106
  133. data/lib/rdoc/ri/util.rb +0 -79
  134. data/lib/rdoc/ri/writer.rb +0 -68
  135. data/test/test_rdoc_ri_attribute_formatter.rb +0 -44
  136. data/test/test_rdoc_ri_default_display.rb +0 -302
  137. data/test/test_rdoc_ri_formatter.rb +0 -320
  138. data/test/test_rdoc_ri_html_formatter.rb +0 -141
  139. data/test/test_rdoc_ri_overstrike_formatter.rb +0 -71
@@ -7,15 +7,21 @@ require 'rdoc/markup/to_html'
7
7
  class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
8
8
 
9
9
  ##
10
- # Regular expressions to match class and method references.
10
+ # Regular expression to match class references
11
11
  #
12
12
  # 1) There can be a '\' in front of text to suppress any cross-references
13
13
  # 2) There can be a '::' in front of class names to reference from the
14
14
  # top-level namespace.
15
- # 3) The method can be followed by parenthesis which may
15
+ # 3) The method can be followed by parenthesis
16
16
 
17
17
  CLASS_REGEXP_STR = '\\\\?((?:\:{2})?[A-Z]\w*(?:\:\:\w+)*)'
18
- METHOD_REGEXP_STR = '(\w+[!?=]?)(?:\([\.\w+\*\/\+\-\=\<\>]*\))?'
18
+
19
+ ##
20
+ # Regular expression to match method references.
21
+ #
22
+ # See CLASS_REGEXP_STR
23
+
24
+ METHOD_REGEXP_STR = '(\w+[!?=]?)(?:\([\w.+*/=<>-]*\))?'
19
25
 
20
26
  ##
21
27
  # Regular expressions matching text that should potentially have
@@ -50,7 +56,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
50
56
  # The key thing is that there must be at least
51
57
  # one special character (period, slash, or
52
58
  # underscore).
53
- | [\/\w]+[_\/\.][\w\/\.]+
59
+ | (?:\.\.\/)*[-\/\w]+[_\/\.][-\w\/\.]+
54
60
 
55
61
  # Things that have markup suppressed
56
62
  | \\[^\s]
@@ -0,0 +1,243 @@
1
+ require 'rdoc/markup/inline'
2
+
3
+ ##
4
+ # Outputs RDoc markup as RDoc markup! (mostly)
5
+
6
+ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
7
+
8
+ attr_accessor :indent
9
+ attr_reader :list_index
10
+ attr_reader :list_type
11
+ attr_reader :list_width
12
+ attr_reader :prefix
13
+ attr_reader :res
14
+
15
+ def initialize
16
+ super
17
+
18
+ @markup.add_special(/\\[^\s]/, :SUPPRESSED_CROSSREF)
19
+
20
+ @width = 78
21
+ @prefix = ''
22
+
23
+ init_tags
24
+
25
+ @headings = {}
26
+ @headings.default = []
27
+
28
+ @headings[1] = ['= ', '']
29
+ @headings[2] = ['== ', '']
30
+ @headings[3] = ['=== ', '']
31
+ @headings[4] = ['==== ', '']
32
+ @headings[5] = ['===== ', '']
33
+ @headings[6] = ['====== ', '']
34
+ end
35
+
36
+ ##
37
+ # Maps attributes to ANSI sequences
38
+
39
+ def init_tags
40
+ add_tag :BOLD, "<b>", "</b>"
41
+ add_tag :TT, "<tt>", "</tt>"
42
+ add_tag :EM, "<em>", "</em>"
43
+ end
44
+
45
+ def accept_blank_line blank_line
46
+ @res << "\n"
47
+ end
48
+
49
+ def accept_heading heading
50
+ use_prefix or @res << ' ' * @indent
51
+ @res << @headings[heading.level][0]
52
+ @res << attributes(heading.text)
53
+ @res << @headings[heading.level][1]
54
+ @res << "\n"
55
+ end
56
+
57
+ def accept_list_end list
58
+ @list_index.pop
59
+ @list_type.pop
60
+ @list_width.pop
61
+ end
62
+
63
+ def accept_list_item_end list_item
64
+ width = case @list_type.last
65
+ when :BULLET then
66
+ 2
67
+ when :NOTE, :LABEL then
68
+ @res << "\n"
69
+ 2
70
+ else
71
+ bullet = @list_index.last.to_s
72
+ @list_index[-1] = @list_index.last.succ
73
+ bullet.length + 2
74
+ end
75
+
76
+ @indent -= width
77
+ end
78
+
79
+ def accept_list_item_start list_item
80
+ bullet = case @list_type.last
81
+ when :BULLET then
82
+ '*'
83
+ when :NOTE, :LABEL then
84
+ attributes(list_item.label) + ":\n"
85
+ else
86
+ @list_index.last.to_s + '.'
87
+ end
88
+
89
+ case @list_type.last
90
+ when :NOTE, :LABEL then
91
+ @indent += 2
92
+ @prefix = bullet + (' ' * @indent)
93
+ else
94
+ @prefix = (' ' * @indent) + bullet.ljust(bullet.length + 1)
95
+
96
+ width = bullet.length + 1
97
+
98
+ @indent += width
99
+ end
100
+ end
101
+
102
+ def accept_list_start list
103
+ case list.type
104
+ when :BULLET then
105
+ @list_index << nil
106
+ @list_width << 1
107
+ when :LABEL, :NOTE then
108
+ @list_index << nil
109
+ @list_width << 2
110
+ when :LALPHA then
111
+ @list_index << 'a'
112
+ @list_width << list.items.length.to_s.length
113
+ when :NUMBER then
114
+ @list_index << 1
115
+ @list_width << list.items.length.to_s.length
116
+ when :UALPHA then
117
+ @list_index << 'A'
118
+ @list_width << list.items.length.to_s.length
119
+ else
120
+ raise RDoc::Error, "invalid list type #{list.type}"
121
+ end
122
+
123
+ @list_type << list.type
124
+ end
125
+
126
+ def accept_paragraph paragraph
127
+ wrap attributes(paragraph.text)
128
+ end
129
+
130
+ def accept_rule rule
131
+ use_prefix or @res << ' ' * @indent
132
+ @res << '-' * (@width - @indent)
133
+ @res << "\n"
134
+ end
135
+
136
+ ##
137
+ # Outputs +verbatim+ flush left and indented 2 columns
138
+
139
+ def accept_verbatim verbatim
140
+ indent = ' ' * (@indent + 2)
141
+
142
+ lines = []
143
+ current_line = []
144
+
145
+ # split into lines
146
+ verbatim.parts.each do |part|
147
+ current_line << part
148
+
149
+ if part == "\n" then
150
+ lines << current_line
151
+ current_line = []
152
+ end
153
+ end
154
+
155
+ lines << current_line unless current_line.empty?
156
+
157
+ # calculate margin
158
+ indented = lines.select { |line| line != ["\n"] }
159
+ margin = indented.map { |line| line.first.length }.min
160
+
161
+ # flush left
162
+ indented.each { |line| line[0][0...margin] = '' }
163
+
164
+ # output
165
+ use_prefix or @res << indent # verbatim is unlikely to have prefix
166
+ @res << lines.shift.join
167
+
168
+ lines.each do |line|
169
+ @res << indent unless line == ["\n"]
170
+ @res << line.join
171
+ end
172
+
173
+ @res << "\n"
174
+ end
175
+
176
+ def attributes text
177
+ flow = @am.flow text.dup
178
+ convert_flow flow
179
+ end
180
+
181
+ def end_accepting
182
+ @res.join
183
+ end
184
+
185
+ def handle_special_SUPPRESSED_CROSSREF special
186
+ special.text.sub(/\\/, '')
187
+ end
188
+
189
+ def start_accepting
190
+ @res = [""]
191
+ @indent = 0
192
+ @prefix = nil
193
+
194
+ @list_index = []
195
+ @list_type = []
196
+ @list_width = []
197
+ end
198
+
199
+ def use_prefix
200
+ prefix = @prefix
201
+ @prefix = nil
202
+ @res << prefix if prefix
203
+
204
+ prefix
205
+ end
206
+
207
+ def wrap text
208
+ return unless text && !text.empty?
209
+
210
+ text_len = @width - @indent
211
+
212
+ text_len = 20 if text_len < 20
213
+
214
+ re = /^(.{0,#{text_len}})[ \n]/
215
+ next_prefix = ' ' * @indent
216
+
217
+ prefix = @prefix || next_prefix
218
+ @prefix = nil
219
+
220
+ @res << prefix
221
+
222
+ while text.length > text_len
223
+ if text =~ re then
224
+ @res << $1
225
+ text.slice!(0, $&.length)
226
+ else
227
+ @res << text.slice!(0, text_len)
228
+ end
229
+
230
+ @res << "\n" << next_prefix
231
+ end
232
+
233
+ if text.empty? then
234
+ @res.pop
235
+ @res.pop
236
+ else
237
+ @res << text
238
+ @res << "\n"
239
+ end
240
+ end
241
+
242
+ end
243
+
@@ -11,42 +11,53 @@ class RDoc::Markup::ToTest < RDoc::Markup::Formatter
11
11
 
12
12
  def start_accepting
13
13
  @res = []
14
+ @list = []
14
15
  end
15
16
 
16
17
  def end_accepting
17
18
  @res
18
19
  end
19
20
 
20
- def accept_paragraph(am, fragment)
21
- @res << fragment.to_s
21
+ def accept_paragraph(paragraph)
22
+ @res << paragraph.text
22
23
  end
23
24
 
24
- def accept_verbatim(am, fragment)
25
- @res << fragment.to_s
25
+ def accept_verbatim(verbatim)
26
+ @res << verbatim.text
26
27
  end
27
28
 
28
- def accept_list_start(am, fragment)
29
- @res << fragment.to_s
29
+ def accept_list_start(list)
30
+ @list << case list.type
31
+ when :BULLET then
32
+ '*'
33
+ when :NUMBER then
34
+ '1'
35
+ else
36
+ list.type
37
+ end
30
38
  end
31
39
 
32
- def accept_list_end(am, fragment)
33
- @res << fragment.to_s
40
+ def accept_list_end(list)
41
+ @list.pop
34
42
  end
35
43
 
36
- def accept_list_item(am, fragment)
37
- @res << fragment.to_s
44
+ def accept_list_item_start(list_item)
45
+ @res << "#{' ' * (@list.size - 1)}#{@list.last}: "
38
46
  end
39
47
 
40
- def accept_blank_line(am, fragment)
41
- @res << fragment.to_s
48
+ def accept_list_item_end(list_item)
42
49
  end
43
50
 
44
- def accept_heading(am, fragment)
45
- @res << fragment.to_s
51
+ def accept_blank_line(blank_line)
52
+ @res << "\n"
46
53
  end
47
54
 
48
- def accept_rule(am, fragment)
49
- @res << fragment.to_s
55
+ def accept_heading(heading)
56
+ @res << "#{'=' * heading.level} #{heading.text}"
57
+ end
58
+
59
+ def accept_rule(rule)
60
+ @res << '-' * rule.weight
50
61
  end
51
62
 
52
63
  end
@@ -0,0 +1,42 @@
1
+ ##
2
+ # A section of verbatim text
3
+
4
+ class RDoc::Markup::Verbatim < RDoc::Markup::Paragraph
5
+
6
+ def accept visitor
7
+ visitor.accept_verbatim self
8
+ end
9
+
10
+ ##
11
+ # Collapses 3+ newlines into two newlines
12
+
13
+ def normalize
14
+ parts = []
15
+
16
+ newlines = 0
17
+
18
+ @parts.each do |part|
19
+ case part
20
+ when /\n/ then
21
+ newlines += 1
22
+ parts << part if newlines <= 2
23
+ else
24
+ newlines = 0
25
+ parts << part
26
+ end
27
+ end
28
+
29
+ parts.slice!(-1) if parts[-2..-1] == ["\n", "\n"]
30
+
31
+ @parts = parts
32
+ end
33
+
34
+ ##
35
+ # The text of the section
36
+
37
+ def text
38
+ @parts.join
39
+ end
40
+
41
+ end
42
+
@@ -5,6 +5,13 @@ require 'rdoc/class_module'
5
5
 
6
6
  class RDoc::NormalClass < RDoc::ClassModule
7
7
 
8
+ ##
9
+ # Ancestor ClassModules
10
+
11
+ def ancestors
12
+ includes + [superclass]
13
+ end
14
+
8
15
  def inspect # :nodoc:
9
16
  superclass = @superclass ? " < #{@superclass}" : nil
10
17
  "<%s:0x%x class %s%s includes: %p attributes: %p methods: %p aliases: %p>" % [
@@ -13,6 +20,36 @@ class RDoc::NormalClass < RDoc::ClassModule
13
20
  ]
14
21
  end
15
22
 
16
- end
23
+ def pretty_print q # :nodoc:
24
+ superclass = @superclass ? " < #{@superclass}" : nil
25
+
26
+ q.group 2, "[class #{full_name}#{superclass} ", "]" do
27
+ q.breakable
28
+ q.text "includes:"
29
+ q.breakable
30
+ q.seplist @includes do |inc| q.pp inc end
17
31
 
32
+ q.breakable
33
+ q.text "attributes:"
34
+ q.breakable
35
+ q.seplist @attributes do |inc| q.pp inc end
36
+
37
+ q.breakable
38
+ q.text "methods:"
39
+ q.breakable
40
+ q.seplist @method_list do |inc| q.pp inc end
41
+
42
+ q.breakable
43
+ q.text "aliases:"
44
+ q.breakable
45
+ q.seplist @aliases do |inc| q.pp inc end
46
+
47
+ q.breakable
48
+ q.text "comment:"
49
+ q.breakable
50
+ q.pp comment
51
+ end
52
+ end
53
+
54
+ end
18
55
 
@@ -6,14 +6,9 @@ require 'rdoc/class_module'
6
6
  class RDoc::NormalModule < RDoc::ClassModule
7
7
 
8
8
  ##
9
- # Appends +comment+ to the current comment, but separated by a rule
9
+ # Included NormalModules
10
10
 
11
- def comment=(comment)
12
- return if comment.empty?
13
- comment = @comment << "\n# ---\n" << comment unless @comment.empty?
14
-
15
- super
16
- end
11
+ alias ancestors includes
17
12
 
18
13
  def inspect # :nodoc:
19
14
  "#<%s:0x%x module %s includes: %p attributes: %p methods: %p aliases: %p>" % [
@@ -29,6 +24,41 @@ class RDoc::NormalModule < RDoc::ClassModule
29
24
  true
30
25
  end
31
26
 
32
- end
27
+ def pretty_print q # :nodoc:
28
+ q.group 2, "[module #{full_name}: ", "]" do
29
+ q.breakable
30
+ q.text "includes:"
31
+ q.breakable
32
+ q.seplist @includes do |inc| q.pp inc end
33
+ q.breakable
34
+
35
+ q.text "attributes:"
36
+ q.breakable
37
+ q.seplist @attributes do |inc| q.pp inc end
38
+ q.breakable
33
39
 
40
+ q.text "methods:"
41
+ q.breakable
42
+ q.seplist @method_list do |inc| q.pp inc end
43
+ q.breakable
44
+
45
+ q.text "aliases:"
46
+ q.breakable
47
+ q.seplist @aliases do |inc| q.pp inc end
48
+ q.breakable
49
+
50
+ q.text "comment:"
51
+ q.breakable
52
+ q.pp comment
53
+ end
54
+ end
55
+
56
+ ##
57
+ # Modules don't have one, raises NoMethodError
58
+
59
+ def superclass
60
+ raise NoMethodError, "#{full_name} is a module"
61
+ end
62
+
63
+ end
34
64