rdoc-rake 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/.autotest +17 -0
- data/History.txt +6 -0
- data/Manifest.txt +8 -0
- data/README.txt +50 -0
- data/Rakefile +17 -0
- data/lib/rdoc/discover.rb +2 -0
- data/lib/rdoc/parser/rake.rb +309 -0
- data/test/test_rdoc_parser_rake.rb +276 -0
- metadata +148 -0
- metadata.gz.sig +1 -0
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
data/Manifest.txt
ADDED
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,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�
|