rdoc-rake 1.0

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig ADDED
Binary file
data/.autotest ADDED
@@ -0,0 +1,17 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'autotest/restart'
4
+
5
+ Autotest.add_hook :initialize do |at|
6
+ at.libs << ':../trunk/lib'
7
+ at.testlib = 'minitest/unit'
8
+
9
+ def at.path_to_classname(s)
10
+ sep = File::SEPARATOR
11
+ f = s.sub(/^test#{sep}/, '').sub(/\.rb$/, '').split(sep)
12
+ f = f.map { |path| path.split(/_|(\d+)/).map { |seg| seg.capitalize }.join }
13
+ f = f.map { |path| path =~ /^Test/ ? path : "Test#{path}" }
14
+ f.join('::').sub 'Rdoc', 'RDoc'
15
+ end
16
+ end
17
+
data/History.txt ADDED
@@ -0,0 +1,6 @@
1
+ === 1.0.0 / 2010-04-19
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
data/Manifest.txt ADDED
@@ -0,0 +1,8 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ lib/rdoc/discover.rb
7
+ lib/rdoc/parser/rake.rb
8
+ test/test_rdoc_parser_rake.rb
data/README.txt ADDED
@@ -0,0 +1,50 @@
1
+ = rdoc_rake
2
+
3
+ * http://rdoc.rubyforge.org/rdoc-rake
4
+
5
+ == DESCRIPTION:
6
+
7
+ RDoc plugin for documenting rake tasks
8
+
9
+ == FEATURES/PROBLEMS:
10
+
11
+ * Little special handling for HTML output
12
+ * Probably inaccessible via ri (but why?)
13
+
14
+ == SYNOPSIS:
15
+
16
+ gem install rdoc-rake
17
+ rdoc lib Rakefile README.txt --main README.txt
18
+
19
+ == REQUIREMENTS:
20
+
21
+ * rdoc 2.5+
22
+
23
+ == INSTALL:
24
+
25
+ * gem install rdoc-rake
26
+
27
+ == LICENSE:
28
+
29
+ (The MIT License)
30
+
31
+ Copyright (c) 2010 Eric Hodel
32
+
33
+ Permission is hereby granted, free of charge, to any person obtaining
34
+ a copy of this software and associated documentation files (the
35
+ 'Software'), to deal in the Software without restriction, including
36
+ without limitation the rights to use, copy, modify, merge, publish,
37
+ distribute, sublicense, and/or sell copies of the Software, and to
38
+ permit persons to whom the Software is furnished to do so, subject to
39
+ the following conditions:
40
+
41
+ The above copyright notice and this permission notice shall be
42
+ included in all copies or substantial portions of the Software.
43
+
44
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
45
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
46
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
47
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
48
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
49
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
50
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require 'hoe/git'
6
+
7
+ Hoe.add_include_dirs '../trunk/lib'
8
+
9
+ Hoe.spec 'rdoc-rake' do
10
+ self.rubyforge_name = 'rdoc'
11
+ developer 'Eric Hodel', 'drbrain@segment7.net'
12
+
13
+ extra_deps << ['rdoc', '~> 2.5']
14
+ extra_rdoc_files << 'Rakefile'
15
+ end
16
+
17
+ # vim: syntax=Ruby
@@ -0,0 +1,2 @@
1
+ require 'rdoc/parser/rake'
2
+
@@ -0,0 +1,309 @@
1
+ require 'rdoc/parser/ruby'
2
+
3
+ ##
4
+ # Maps task builders like Hoe or RDoc::Task to an RDoc::Include
5
+
6
+ class RDoc::RakeBuilder < RDoc::Include
7
+ end
8
+
9
+ ##
10
+ # Maps a Rake namespace to an RDoc::NormalModule
11
+
12
+ class RDoc::RakeNamespace < RDoc::NormalModule
13
+ end
14
+
15
+ ##
16
+ # Maps a Rake::Task to an RDoc::AnyMethod
17
+
18
+ class RDoc::RakeTask < RDoc::AnyMethod
19
+
20
+ attr_accessor :dependencies
21
+
22
+ def initialize(*args)
23
+ super
24
+ @dependencies = []
25
+ end
26
+
27
+ end
28
+
29
+ ##
30
+ # An RDoc parser for Rakefiles.
31
+
32
+ class RDoc::Parser::Rake < RDoc::Parser
33
+
34
+ VERSION = '1.0'
35
+
36
+ include RDoc::RubyToken
37
+ include RDoc::TokenStream
38
+ include RDoc::Parser::RubyTools
39
+
40
+ parse_files_matching(/Rakefile(\.rb)?$/i)
41
+ parse_files_matching(/\.rake$/)
42
+
43
+ def initialize(top_level, file_name, content, options, stats)
44
+ super
45
+
46
+ @size = 0
47
+ @token_listeners = nil
48
+ @scanner = RDoc::RubyLex.new content, @options
49
+ @scanner.exception_on_syntax_error = false
50
+ @rake_tasks = @top_level.add_module RDoc::RakeNamespace, 'Rake Tasks'
51
+
52
+ reset
53
+ end
54
+
55
+ ##
56
+ # Consumes an Array
57
+
58
+ def consume_array
59
+ tokens = get_tk_until TkRBRACK
60
+ tokens << get_tk
61
+ tokens
62
+ end
63
+
64
+ ##
65
+ # Consumes the body of a task
66
+
67
+ def consume_body
68
+ seen_nest = false
69
+ nest = 0
70
+
71
+ body = []
72
+
73
+ while tk = get_tk do
74
+ body << tk
75
+
76
+ case tk
77
+ when TkDO, TkCLASS, TkMODULE, TkDEF, TkBEGIN, TkIF, TkUNLESS, TkCASE,
78
+ TkWHILE, TkUNTIL, TkFOR then
79
+ nest += 1
80
+ seen_nest = true
81
+ when TkEND then
82
+ nest -= 1
83
+ when TkNL then
84
+ break unless seen_nest
85
+ end
86
+
87
+ break if nest == 0 and seen_nest
88
+ end
89
+
90
+ body
91
+ end
92
+
93
+ ##
94
+ # Consumes arguments to a task
95
+
96
+ def consume_task_arguments
97
+ skip_tkspace false
98
+
99
+ tk = get_tk
100
+
101
+ case tk
102
+ when TkNL, TkDO then
103
+ unget_tk tk
104
+ when TkASSIGN then
105
+ get_tk # finish assoc, lexer bug
106
+ skip_tkspace
107
+
108
+ case tk = get_tk
109
+ when TkLBRACK then
110
+ tokens = consume_array
111
+ tokens = tokens.select do |token| TkSYMBOL === token end
112
+ tokens = tokens.map do |token| token.to_sym end
113
+ @task.dependencies.push(*tokens)
114
+ when TkSYMBOL then # ok
115
+ @task.dependencies << tk.to_sym
116
+ else
117
+ puts :task_arg => tk
118
+ end
119
+ end
120
+ end
121
+
122
+ ##
123
+ # Parses a Rake description
124
+ #
125
+ # desc "My cool task"
126
+
127
+ def parse_description
128
+ skip_tkspace
129
+
130
+ tk = get_tk
131
+
132
+ @desc = tk.text[1..-2]
133
+ end
134
+
135
+ ##
136
+ # Parses a Rake namespace
137
+ #
138
+ # namespace "doc"
139
+
140
+ def parse_namespace
141
+ skip_tkspace
142
+
143
+ tk = get_tk
144
+
145
+ namespace = @container.add_module RDoc::RakeNamespace, tk.text[1..-1]
146
+
147
+ skip_tkspace
148
+
149
+ old_namespace = @container
150
+
151
+ begin
152
+ @nest += 1
153
+ @container = namespace
154
+
155
+ parse_rakefile
156
+ ensure
157
+ @container = old_namespace
158
+ @nest -= 1
159
+ end
160
+ end
161
+
162
+ ##
163
+ # Parses a Rake task
164
+ #
165
+ # task "my_cool_task"
166
+
167
+ def parse_task(tk)
168
+ collect_tokens
169
+ add_token tk
170
+
171
+ token_listener self do
172
+ skip_tkspace false
173
+
174
+ tk = get_tk
175
+ name = tk.text
176
+
177
+ @task = @container.find_instance_method_named name
178
+
179
+ unless @task then
180
+ @task = RDoc::RakeTask.new tokens_to_s, name
181
+ @container.add_method @task
182
+ @stats.add_method @task
183
+ end
184
+
185
+ @task.comment += use_desc
186
+
187
+ consume_task_arguments
188
+ end
189
+
190
+ @task.collect_tokens
191
+ @task.add_tokens token_stream
192
+
193
+ token_listener @task do
194
+ consume_body
195
+ end
196
+
197
+ @task
198
+ end
199
+
200
+ ##
201
+ # Parses a Rake task builder
202
+ #
203
+ # Hoe.new 'my_cool_project' do # ...
204
+
205
+ def parse_task_builder(tk)
206
+ name = tk.name
207
+
208
+ if 'ENV' == name then
209
+ get_tk_until TkNL
210
+ return
211
+ end
212
+
213
+ get_tk_until TkDO, TkNL
214
+
215
+ tk = get_tk
216
+
217
+ case tk
218
+ when TkDO then
219
+ unget_tk tk
220
+ consume_body
221
+ end
222
+
223
+ builder = RDoc::RakeBuilder.new name, ''
224
+
225
+ @container.add_include builder
226
+ end
227
+
228
+ ##
229
+ # Parses a Rakefile
230
+
231
+ def parse_rakefile
232
+ current_nest = @nest
233
+
234
+ while tk = get_tk do
235
+ case tk
236
+ when TkCONSTANT then
237
+ parse_task_builder tk
238
+ when TkDO then
239
+ @nest += 1
240
+ when TkEND then
241
+ @nest -= 1
242
+ break if current_nest > 0 and @nest <= current_nest
243
+ when TkIDENTIFIER then
244
+ case tk.name
245
+ when 'desc' then
246
+ parse_description
247
+ when 'task' then
248
+ parse_task(tk)
249
+ when 'namespace' then
250
+ parse_namespace
251
+ when 'require' then
252
+ parse_require
253
+ #else
254
+ # p :ident => tk
255
+ end
256
+ when TkNL, TkSPACE then # ignore
257
+ #else
258
+ # p :unhandled => tk
259
+ end
260
+ end
261
+ end
262
+
263
+ ##
264
+ # Adds a new RDoc::Require to the container
265
+
266
+ def parse_require
267
+ skip_tkspace false
268
+
269
+ tk = get_tk
270
+
271
+ name = tk.text if TkSTRING === tk
272
+
273
+ if name then
274
+ @container.add_require RDoc::Require.new(name, '')
275
+ else
276
+ unget_tk tk
277
+ end
278
+ end
279
+
280
+ ##
281
+ # Performs the work of parsing a rakefile
282
+
283
+ def scan
284
+ reset
285
+
286
+ @container = @rake_tasks
287
+
288
+ @stats.add_module @container
289
+
290
+ catch :eof do
291
+ catch :enddoc do
292
+ parse_rakefile
293
+ end
294
+ end
295
+
296
+ @top_level
297
+ end
298
+
299
+ ##
300
+ # Uses the last description encountered
301
+
302
+ def use_desc
303
+ desc = @desc
304
+ @desc = nil
305
+ desc || ''
306
+ end
307
+
308
+ end
309
+
@@ -0,0 +1,276 @@
1
+ require 'stringio'
2
+ require 'tempfile'
3
+ require 'rubygems'
4
+ require 'minitest/autorun'
5
+
6
+ require 'rdoc'
7
+ require 'rdoc/options'
8
+ require 'rdoc/parser/rake'
9
+
10
+ class TestRDocParserRake < MiniTest::Unit::TestCase
11
+
12
+ def setup
13
+ @tempfile = Tempfile.new self.class.name
14
+ @filename = @tempfile.path
15
+
16
+ util_top_level
17
+
18
+ @options = RDoc::Options.new
19
+ @options.quiet = true
20
+ @stats = RDoc::Stats.new 0
21
+ end
22
+
23
+ def teardown
24
+ @tempfile.close
25
+ end
26
+
27
+ def test_parse_tasks
28
+ rakefile = <<-RAKE
29
+ desc "my cool task"
30
+ task :default do
31
+ puts "you ran my cool task!"
32
+ end
33
+ RAKE
34
+
35
+ util_parser rakefile
36
+
37
+ @parser.scan
38
+
39
+ util_tasks
40
+ assert_equal 1, @tasks.length
41
+ task = @tasks.first
42
+
43
+ assert_equal ':default', task.name
44
+ assert_equal 'my cool task', task.comment
45
+ assert_equal 'task :default', task.text
46
+ end
47
+
48
+ def test_parse_tasks_dependency
49
+ rakefile = <<-RAKE
50
+ desc "my cool task"
51
+ task :default => :test do
52
+ puts "you ran my cool task!"
53
+ end
54
+ RAKE
55
+
56
+ util_parser rakefile
57
+
58
+ @parser.scan
59
+
60
+ util_tasks
61
+ assert_equal 1, @tasks.length
62
+ task = @tasks.first
63
+
64
+ assert_equal ':default', task.name
65
+ assert_equal 'my cool task', task.comment
66
+
67
+ assert_equal 'task :default', task.text
68
+ assert_equal [:test], task.dependencies
69
+
70
+ expected = [
71
+ tk(:identifier, 2, 0, 'task', 'task'),
72
+ tk(:space, 2, 4, nil, ' '),
73
+ tk(:symbol, 2, 5, nil, ':default'),
74
+ tk(:space, 2, 13, nil, ' '),
75
+ tk(:assign, 2, 14, nil, '='),
76
+ tk(:gt, 2, 15, nil, '>'),
77
+ tk(:space, 2, 16, nil, ' '),
78
+ tk(:symbol, 2, 17, nil, ':test'),
79
+ tk(:space, 2, 22, nil, ' '),
80
+ tk(:do, 2, 23, 'do', 'do'),
81
+ tk(:nl, 2, 25, nil, "\n"),
82
+ tk(:space, 3, 0, nil, ' '),
83
+ tk(:identifier, 3, 2, 'puts', 'puts'),
84
+ tk(:space, 3, 6, nil, ' '),
85
+ tk(:string, 3, 7, nil, '"you ran my cool task!"'),
86
+ tk(:nl, 3, 30, nil, "\n"),
87
+ tk(:end, 4, 0, 'end', 'end'),
88
+ ]
89
+
90
+ assert_equal expected, task.token_stream
91
+ end
92
+
93
+ def test_parse_tasks_dependency_only
94
+ rakefile = <<-RAKE
95
+ desc "my cool task"
96
+ task :default => :test
97
+
98
+ task :test => :build
99
+ RAKE
100
+
101
+ util_parser rakefile
102
+
103
+ @parser.scan
104
+
105
+ util_tasks
106
+ assert_equal 2, @tasks.length
107
+ task = @tasks.first
108
+
109
+ assert_equal ':default', task.name
110
+ assert_equal 'my cool task', task.comment
111
+ assert_equal 'task :default', task.text
112
+ assert_equal [:test], task.dependencies
113
+
114
+ expected = [
115
+ tk(:identifier, 2, 0, 'task', 'task'),
116
+ tk(:space, 2, 4, nil, ' '),
117
+ tk(:symbol, 2, 5, nil, ':default'),
118
+ tk(:space, 2, 13, nil, ' '),
119
+ tk(:assign, 2, 14, nil, '='), # lexer bug
120
+ tk(:gt, 2, 15, nil, '>'),
121
+ tk(:space, 2, 16, nil, ' '),
122
+ tk(:symbol, 2, 17, nil, ':test'),
123
+ tk(:nl, 2, 22, nil, "\n"),
124
+ ]
125
+
126
+ assert_equal expected, task.token_stream
127
+ end
128
+
129
+ def test_parse_tasks_dependencies
130
+ rakefile = <<-RAKE
131
+ desc "my cool task"
132
+ task :default => [:build, :test]
133
+ RAKE
134
+
135
+ util_parser rakefile
136
+
137
+ @parser.scan
138
+
139
+ util_tasks
140
+ assert_equal 1, @tasks.length
141
+ task = @tasks.first
142
+
143
+ assert_equal ':default', task.name
144
+ assert_equal 'my cool task', task.comment
145
+ assert_equal 'task :default', task.text
146
+ assert_equal [:build, :test], task.dependencies
147
+ end
148
+
149
+ def test_parse_tasks_hoe
150
+ rakefile = <<-RAKE
151
+ Hoe.spec 'my_cool_project' do
152
+ developer 'Cool Guy', 'cool_guy@example.com'
153
+ end
154
+
155
+ desc "my cool task"
156
+ task :default do
157
+ puts "you ran my cool task!"
158
+ end
159
+ RAKE
160
+
161
+ util_parser rakefile
162
+
163
+ @parser.scan
164
+
165
+ util_tasks
166
+ assert_equal 1, @tasks.length
167
+ task = @tasks.first
168
+
169
+ assert_equal ':default', task.name
170
+
171
+ assert_equal 1, @rake_tasks.includes.length
172
+ hoe = @rake_tasks.includes.first
173
+
174
+ assert_equal 'Hoe', hoe.name
175
+ end
176
+
177
+ def test_parse_tasks_require
178
+ rakefile = <<-RAKE
179
+ require 'blah'
180
+ RAKE
181
+
182
+ util_parser rakefile
183
+
184
+ @parser.scan
185
+
186
+ assert_equal 1, @top_level.requires.length
187
+ require = @top_level.requires.first
188
+
189
+ assert_equal 'blah', require.name
190
+ end
191
+
192
+ def test_parse_tasks_split
193
+ rakefile = <<-RAKE
194
+ desc "my cool task"
195
+ task :default => :build
196
+
197
+ task :default => :test
198
+ RAKE
199
+
200
+ util_parser rakefile
201
+
202
+ @parser.scan
203
+
204
+ util_tasks
205
+ assert_equal 1, @tasks.length
206
+ task = @tasks.first
207
+
208
+ assert_equal ':default', task.name
209
+ assert_equal 'my cool task', task.comment
210
+ assert_equal 'task :default', task.text
211
+ assert_equal [:build, :test], task.dependencies
212
+ end
213
+
214
+ def test_parse_tasks_namespage
215
+ rakefile = <<-RAKE
216
+ desc "my cool task"
217
+ task :default do
218
+ puts "you ran my cool task!"
219
+ end
220
+
221
+ namespace :cool do
222
+ task :awesome do
223
+ end
224
+ end
225
+
226
+ desc "this is another cool task"
227
+ task :other
228
+ RAKE
229
+
230
+ util_parser rakefile
231
+
232
+ @parser.scan
233
+
234
+ #pp @top_level
235
+ util_tasks
236
+
237
+ assert_equal 2, @tasks.length
238
+ task = @tasks.first
239
+
240
+ assert_equal ':default', @tasks.first.name
241
+ assert_equal ':other', @tasks.last.name
242
+ end
243
+
244
+ def tk(klass, line, char, name, text) # HACK dup
245
+ klass = RDoc::RubyToken.const_get "Tk#{klass.to_s.upcase}"
246
+
247
+ token = if klass.instance_method(:initialize).arity == 3 then
248
+ raise ArgumentError, "name not used for #{klass}" unless name.nil?
249
+ klass.new nil, line, char
250
+ else
251
+ klass.new nil, line, char, name
252
+ end
253
+
254
+ token.set_text text
255
+
256
+ token
257
+ end
258
+
259
+ def util_parser(content)
260
+ @parser = RDoc::Parser::Rake.new @top_level, @filename, content, @options,
261
+ @stats
262
+ end
263
+
264
+ def util_top_level
265
+ RDoc::TopLevel.reset
266
+ @top_level = RDoc::TopLevel.new @filename
267
+ end
268
+
269
+ def util_tasks
270
+ @rake_tasks = @top_level.modules.first
271
+
272
+ @tasks = @rake_tasks.method_list
273
+ end
274
+
275
+ end
276
+
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rdoc-rake
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ version: "1.0"
9
+ platform: ruby
10
+ authors:
11
+ - Eric Hodel
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain:
15
+ - |
16
+ -----BEGIN CERTIFICATE-----
17
+ MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRAwDgYDVQQDDAdkcmJy
18
+ YWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZFgNu
19
+ ZXQwHhcNMDcxMjIxMDIwNDE0WhcNMDgxMjIwMDIwNDE0WjBBMRAwDgYDVQQDDAdk
20
+ cmJyYWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZ
21
+ FgNuZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbbgLrGLGIDE76
22
+ LV/cvxdEzCuYuS3oG9PrSZnuDweySUfdp/so0cDq+j8bqy6OzZSw07gdjwFMSd6J
23
+ U5ddZCVywn5nnAQ+Ui7jMW54CYt5/H6f2US6U0hQOjJR6cpfiymgxGdfyTiVcvTm
24
+ Gj/okWrQl0NjYOYBpDi+9PPmaH2RmLJu0dB/NylsDnW5j6yN1BEI8MfJRR+HRKZY
25
+ mUtgzBwF1V4KIZQ8EuL6I/nHVu07i6IkrpAgxpXUfdJQJi0oZAqXurAV3yTxkFwd
26
+ g62YrrW26mDe+pZBzR6bpLE+PmXCzz7UxUq3AE0gPHbiMXie3EFE0oxnsU3lIduh
27
+ sCANiQ8BAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
28
+ BBS5k4Z75VSpdM0AclG2UvzFA/VW5DANBgkqhkiG9w0BAQUFAAOCAQEAHagT4lfX
29
+ kP/hDaiwGct7XPuVGbrOsKRVD59FF5kETBxEc9UQ1clKWngf8JoVuEoKD774dW19
30
+ bU0GOVWO+J6FMmT/Cp7nuFJ79egMf/gy4gfUfQMuvfcr6DvZUPIs9P/TlK59iMYF
31
+ DIOQ3DxdF3rMzztNUCizN4taVscEsjCcgW6WkUJnGdqlu3OHWpQxZBJkBTjPCoc6
32
+ UW6on70SFPmAy/5Cq0OJNGEWBfgD9q7rrs/X8GGwUWqXb85RXnUVi/P8Up75E0ag
33
+ 14jEc90kN+C7oI/AGCBN0j6JnEtYIEJZibjjDJTSMWlUKKkj30kq7hlUC2CepJ4v
34
+ x52qPcexcYZR7w==
35
+ -----END CERTIFICATE-----
36
+
37
+ date: 2010-04-19 00:00:00 -07:00
38
+ default_executable:
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: rdoc
42
+ prerelease: false
43
+ requirement: &id001 !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ segments:
48
+ - 2
49
+ - 5
50
+ version: "2.5"
51
+ type: :runtime
52
+ version_requirements: *id001
53
+ - !ruby/object:Gem::Dependency
54
+ name: rubyforge
55
+ prerelease: false
56
+ requirement: &id002 !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ segments:
61
+ - 2
62
+ - 0
63
+ - 3
64
+ version: 2.0.3
65
+ type: :development
66
+ version_requirements: *id002
67
+ - !ruby/object:Gem::Dependency
68
+ name: gemcutter
69
+ prerelease: false
70
+ requirement: &id003 !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ segments:
75
+ - 0
76
+ - 5
77
+ - 0
78
+ version: 0.5.0
79
+ type: :development
80
+ version_requirements: *id003
81
+ - !ruby/object:Gem::Dependency
82
+ name: hoe
83
+ prerelease: false
84
+ requirement: &id004 !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ segments:
89
+ - 2
90
+ - 5
91
+ - 0
92
+ version: 2.5.0
93
+ type: :development
94
+ version_requirements: *id004
95
+ description: RDoc plugin for documenting rake tasks
96
+ email:
97
+ - drbrain@segment7.net
98
+ executables: []
99
+
100
+ extensions: []
101
+
102
+ extra_rdoc_files:
103
+ - History.txt
104
+ - Manifest.txt
105
+ - README.txt
106
+ - Rakefile
107
+ files:
108
+ - .autotest
109
+ - History.txt
110
+ - Manifest.txt
111
+ - README.txt
112
+ - Rakefile
113
+ - lib/rdoc/discover.rb
114
+ - lib/rdoc/parser/rake.rb
115
+ - test/test_rdoc_parser_rake.rb
116
+ has_rdoc: true
117
+ homepage: http://rdoc.rubyforge.org/rdoc-rake
118
+ licenses: []
119
+
120
+ post_install_message:
121
+ rdoc_options:
122
+ - --main
123
+ - README.txt
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ segments:
131
+ - 0
132
+ version: "0"
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ segments:
138
+ - 0
139
+ version: "0"
140
+ requirements: []
141
+
142
+ rubyforge_project: rdoc
143
+ rubygems_version: 1.3.6
144
+ signing_key:
145
+ specification_version: 3
146
+ summary: RDoc plugin for documenting rake tasks
147
+ test_files:
148
+ - test/test_rdoc_parser_rake.rb
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ J_nF���A�f�Y��B���<V��&���&�]�8�� ِղ���}���?�0f�l�a� ��9�7񬴃.a��9��W��W��[��X� {�Ϛ��+��M�