jrun-rstack 0.5.2
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/CHANGELOG.txt +0 -0
- data/LICENSE.txt +20 -0
- data/README.textile +57 -0
- data/Rakefile +13 -0
- data/bin/rstack +18 -0
- data/lib/rstack/configuration.rb +67 -0
- data/lib/rstack/generator.rb +58 -0
- data/lib/rstack/tasks/doc.rb +15 -0
- data/lib/rstack/tasks/gem.rb +52 -0
- data/lib/rstack/tasks/rspec.rb +24 -0
- data/lib/rstack/version.rb +9 -0
- data/lib/rstack.rb +25 -0
- data/spec/configuration_spec.rb +49 -0
- data/spec/generator_spec.rb +76 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/tasks/doc_spec.rb +13 -0
- data/templates/README.txt +1 -0
- data/templates/Rakefile +11 -0
- data/templates/cruise_config.rb +10 -0
- data/templates/main.rb +1 -0
- data/templates/spec_helper.rb +14 -0
- data/templates/version.rb +8 -0
- data/vendor/allison-2.0.2/CHANGELOG +16 -0
- data/vendor/allison-2.0.2/LICENSE +184 -0
- data/vendor/allison-2.0.2/Manifest +23 -0
- data/vendor/allison-2.0.2/README +66 -0
- data/vendor/allison-2.0.2/allison.gemspec +45 -0
- data/vendor/allison-2.0.2/bin/allison +9 -0
- data/vendor/allison-2.0.2/cache/BODY +571 -0
- data/vendor/allison-2.0.2/cache/CLASS_INDEX +4 -0
- data/vendor/allison-2.0.2/cache/CLASS_PAGE +1 -0
- data/vendor/allison-2.0.2/cache/FILE_INDEX +4 -0
- data/vendor/allison-2.0.2/cache/FILE_PAGE +1 -0
- data/vendor/allison-2.0.2/cache/FONTS +1 -0
- data/vendor/allison-2.0.2/cache/FR_INDEX_BODY +1 -0
- data/vendor/allison-2.0.2/cache/INDEX +1 -0
- data/vendor/allison-2.0.2/cache/JAVASCRIPT +317 -0
- data/vendor/allison-2.0.2/cache/METHOD_INDEX +4 -0
- data/vendor/allison-2.0.2/cache/METHOD_LIST +1 -0
- data/vendor/allison-2.0.2/cache/PROJECT +1 -0
- data/vendor/allison-2.0.2/cache/SRC_PAGE +1 -0
- data/vendor/allison-2.0.2/cache/STYLE +321 -0
- data/vendor/allison-2.0.2/contrib/Rakefile +147 -0
- data/vendor/allison-2.0.2/lib/allison.css +315 -0
- data/vendor/allison-2.0.2/lib/allison.js +317 -0
- data/vendor/allison-2.0.2/lib/allison.rb +276 -0
- metadata +157 -0
@@ -0,0 +1,147 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test the yar_wiki plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
ENV['RAILS_ENV'] = 'test'
|
11
|
+
t.libs << 'lib'
|
12
|
+
t.pattern = 'test/**/*_test.rb'
|
13
|
+
t.verbose = true
|
14
|
+
end
|
15
|
+
|
16
|
+
# ERGO teach +sed+ to trim trailing spaces, and to not modify the file time if there were none
|
17
|
+
# ERGO teach rdoc to ignore TO-DOs! ;-)
|
18
|
+
# ERGO obtain Donne Roberts tracks!
|
19
|
+
# ERGO all rake ci commands should complain about stray files
|
20
|
+
# ERGO ASCII art for other module header
|
21
|
+
# ERGO why FreeRIDE can't see Rakefile??
|
22
|
+
|
23
|
+
|
24
|
+
require 'doc/rdoc_patch' # ERGO move this inside task!
|
25
|
+
|
26
|
+
#:stopdoc:
|
27
|
+
=begin
|
28
|
+
ERGO wish list for RDoc:
|
29
|
+
|
30
|
+
* the ability to alias a link to another part of the project. Example:
|
31
|
+
|
32
|
+
assert_xpath[AssertXPath#assert_xpath]
|
33
|
+
-> <a href='..'>assert_xpath</a>
|
34
|
+
|
35
|
+
that would shorten the cross-link from another module
|
36
|
+
|
37
|
+
! the ability to transclude a snip of source from one module into the
|
38
|
+
doc for another. For example, assert_xpath's doc should not say:
|
39
|
+
|
40
|
+
See AssertXPathTest#test_assert_xpath
|
41
|
+
|
42
|
+
The contents of that test case should simply appear in the doc itself.
|
43
|
+
|
44
|
+
* alternative, pretty, persistent URIs for items. Not:
|
45
|
+
|
46
|
+
http://assertxpath.rubyforge.org/classes/AssertXPath.html#M000106
|
47
|
+
|
48
|
+
but:
|
49
|
+
|
50
|
+
http://assertxpath.rubyforge.org/classes/AssertXPath.html#assert_xpath
|
51
|
+
|
52
|
+
(Note I can do this with your patch, manually, by putting in an anchor)
|
53
|
+
|
54
|
+
* Each page should have a linker to the root index.html
|
55
|
+
|
56
|
+
* Ability to stick a method on the page where it belongs, instead
|
57
|
+
of the page for the class where it happens to be!
|
58
|
+
|
59
|
+
* link to complete source (I might be missing this one!)
|
60
|
+
|
61
|
+
* don't trip over this colon:
|
62
|
+
|
63
|
+
send(:"format_#{item.kind}", item, ypath)
|
64
|
+
|
65
|
+
* complain for broken links
|
66
|
+
|
67
|
+
Finally, this might be pilot error, but certain class names I simply cannot
|
68
|
+
get out of the class list...
|
69
|
+
|
70
|
+
=end
|
71
|
+
|
72
|
+
#:startdoc:
|
73
|
+
|
74
|
+
desc 'Generate documentation for the yar_wiki plugin.'
|
75
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
76
|
+
|
77
|
+
# ERGO plunder:
|
78
|
+
# http://www.ruby-doc.org/stdlib/libdoc/rdoc/rdoc/index.html
|
79
|
+
# http://www.ruby-doc.org/stdlib/libdoc/rdoc/rdoc/classes/Options.html
|
80
|
+
|
81
|
+
rdoc.rdoc_dir = 'rdoc'
|
82
|
+
rdoc.title = 'XPath & JavaScript Assertions'
|
83
|
+
rdoc.options << '--line-numbers' << '--inline-source' << '--style=yar-style.css'
|
84
|
+
|
85
|
+
# ERGO good home for ../yar-style.css
|
86
|
+
# ERGO hanging indent on the bullet pointed items5
|
87
|
+
# ERGO --style with some groovy yar-wiki- (and flea-) inspired theme
|
88
|
+
# ERGO does # :yields: element mean returns?
|
89
|
+
# TODO use call-seq to fix *args
|
90
|
+
|
91
|
+
rdoc.rdoc_files.include('README')
|
92
|
+
|
93
|
+
rdoc.rdoc_files.include('test/*_test.rb')
|
94
|
+
# ERGO clean this up and link in to them
|
95
|
+
# and get the method names out of the general index?
|
96
|
+
|
97
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
98
|
+
end
|
99
|
+
|
100
|
+
desc 'send rdocs to rubyforge.org'
|
101
|
+
task :publish => :style do
|
102
|
+
system 'scp -r rdoc/* phlip@assertxpath.rubyforge.org:/var/www/gforge-projects/assertxpath/'
|
103
|
+
end
|
104
|
+
|
105
|
+
desc 'upgrade and inspect the rdoc folder'
|
106
|
+
task :style => :rdoc do
|
107
|
+
FileUtils.copy 'doc/yar-style.css', 'rdoc/'
|
108
|
+
FileUtils.copy 'doc/sky.png', 'rdoc/'
|
109
|
+
system 'grep ERGO rdoc -r'
|
110
|
+
system 'grep TODO rdoc -r'
|
111
|
+
end
|
112
|
+
|
113
|
+
task :agiledox do
|
114
|
+
tests = FileList['test/**/*_test.rb']
|
115
|
+
tests.each do |file|
|
116
|
+
m = %r".*/([^/].*)_test.rb".match(file)
|
117
|
+
puts m[1]+" should:\n"
|
118
|
+
test_definitions = File::readlines(file).select {|line| line =~ /.*def test.*/}
|
119
|
+
test_definitions.each do |definition|
|
120
|
+
m = %r"test_(should_)?(.*)".match(definition)
|
121
|
+
puts " - "+m[2].gsub(/_/," ")
|
122
|
+
end
|
123
|
+
puts "\n"
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def findTodos(searchFor)
|
128
|
+
folders = %w(lib tasks test wiki)
|
129
|
+
files = FileList[ *folders.map{|q| q+'/**/*'} ]
|
130
|
+
|
131
|
+
files.collect!{|f| f if File.file?(f) }
|
132
|
+
files.compact!
|
133
|
+
|
134
|
+
files.each do |f|
|
135
|
+
if f !~ /(db|extra)$/
|
136
|
+
system "grep -H #{searchFor} #{f}"
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
# in order of severity...
|
142
|
+
|
143
|
+
task :fixme do findTodos('FIX'+'ME') end
|
144
|
+
task :ergo do findTodos('ER'+'GO') end # this keeps the excessive assert_xpath out of client's TODO searches!
|
145
|
+
task :todo do findTodos('TO'+'DO') end
|
146
|
+
task :consider do findTodos('CON'+'SIDER') end
|
147
|
+
task :note do findTodos('NO'+'TE') end
|
@@ -0,0 +1,315 @@
|
|
1
|
+
|
2
|
+
/*
|
3
|
+
Allison template
|
4
|
+
Copyright 2007 Cloudburst LLC, all rights reserved
|
5
|
+
Redistribution or modification prohibited
|
6
|
+
*/
|
7
|
+
|
8
|
+
/* default styles */
|
9
|
+
|
10
|
+
* {
|
11
|
+
margin: 0
|
12
|
+
padding: 0
|
13
|
+
border: none
|
14
|
+
}
|
15
|
+
|
16
|
+
@default = "#000"
|
17
|
+
@background = "#fff"
|
18
|
+
@very_light = "#e4ebed"
|
19
|
+
@light = "#ccd5dc"
|
20
|
+
@medium = "#304878"
|
21
|
+
@dark = "#181848"
|
22
|
+
|
23
|
+
@buffer = 6
|
24
|
+
|
25
|
+
.clear {
|
26
|
+
clear: both
|
27
|
+
}
|
28
|
+
|
29
|
+
a {
|
30
|
+
color: @medium
|
31
|
+
font-weight: bold
|
32
|
+
text-decoration: none
|
33
|
+
}
|
34
|
+
|
35
|
+
a:hover {
|
36
|
+
text-decoration: underline
|
37
|
+
}
|
38
|
+
|
39
|
+
html, body {
|
40
|
+
color: @default
|
41
|
+
font-size: @font_size = 13
|
42
|
+
font-family: helvetica, verdana, sans
|
43
|
+
background-color: @background
|
44
|
+
text-align: center
|
45
|
+
margin: 0
|
46
|
+
padding: 0
|
47
|
+
}
|
48
|
+
|
49
|
+
p, ul, ol {
|
50
|
+
line-height: @lineheight = 16
|
51
|
+
} li {
|
52
|
+
margin: @buffer / 2
|
53
|
+
_margin-left: 40px
|
54
|
+
} p, pre, table, ol, ul {
|
55
|
+
margin: @lineheight
|
56
|
+
} #item_name {
|
57
|
+
margin-top: -8px
|
58
|
+
}
|
59
|
+
|
60
|
+
h1 {
|
61
|
+
font-size: 22px
|
62
|
+
margin-top: @lineheight
|
63
|
+
} h2, h3 {
|
64
|
+
font-size: @medium_header_size = 18
|
65
|
+
margin: @buffer
|
66
|
+
margin-right: 0
|
67
|
+
padding-top: @buffer * 2
|
68
|
+
}
|
69
|
+
|
70
|
+
/* center everything */
|
71
|
+
|
72
|
+
#container {
|
73
|
+
margin: 20px auto 0 auto
|
74
|
+
width: @width = 900
|
75
|
+
text-align: left
|
76
|
+
}
|
77
|
+
|
78
|
+
/* header stuff */
|
79
|
+
|
80
|
+
#header {
|
81
|
+
padding: @buffer
|
82
|
+
padding-top: @buffer / 2
|
83
|
+
width: @width - @buffer * 2
|
84
|
+
height: @header_height = 64 - @buffer * 2
|
85
|
+
_height: @header_height + @buffer
|
86
|
+
margin-bottom: @buffer * 2
|
87
|
+
vertical-align: baseline
|
88
|
+
background-color: @dark
|
89
|
+
overflow: hidden
|
90
|
+
} .curve {
|
91
|
+
background-color: @dark
|
92
|
+
margin: 0
|
93
|
+
padding: 0
|
94
|
+
height: 1px
|
95
|
+
overflow: hidden /* again, ie problem */
|
96
|
+
}
|
97
|
+
|
98
|
+
def curve(div_id, curve_array, width); s = ""; curve_array.length.times {|n| s += "\n##{div_id}#{curve_array.length - 1 - n}{border-left: #{curve_array[n]}px solid #{@background}; border-right: #{curve_array[n]}px solid #{@background}; width: #{width - curve_array[n]*2}px; _width: #{width - 12}px; }"}; s; end
|
99
|
+
@curves = [1, 1, 2, 3, 4, 6]
|
100
|
+
|
101
|
+
curve("preheader_curve_", @curves, @width)
|
102
|
+
|
103
|
+
#header h1 {
|
104
|
+
color: @background
|
105
|
+
font-size: 30px
|
106
|
+
margin: 4px 0 0 0
|
107
|
+
} #header p {
|
108
|
+
margin: 0
|
109
|
+
padding: 0
|
110
|
+
padding-left: 3px
|
111
|
+
font-size: 16px
|
112
|
+
color: @background
|
113
|
+
} #header a {
|
114
|
+
color: @background
|
115
|
+
text-decoration: none
|
116
|
+
font-weight: bold
|
117
|
+
}
|
118
|
+
|
119
|
+
/* basic layout and navigation bars */
|
120
|
+
|
121
|
+
#left {
|
122
|
+
background-color: @dark
|
123
|
+
width: @left_width = 220
|
124
|
+
float: left
|
125
|
+
_width: @left_width - @buffer * 2
|
126
|
+
margin-bottom: @buffer * 4
|
127
|
+
} #left a {
|
128
|
+
line-height: 14px
|
129
|
+
}
|
130
|
+
|
131
|
+
/* navigation bar colors and text styles */
|
132
|
+
|
133
|
+
.navigation {
|
134
|
+
width: @left_width - @buffer * 4
|
135
|
+
margin: @buffer
|
136
|
+
padding: @buffer
|
137
|
+
text-align: left
|
138
|
+
background-color: @background
|
139
|
+
overflow: hidden
|
140
|
+
} .navigation h3 {
|
141
|
+
font-weight: bold
|
142
|
+
margin-bottom: 5px
|
143
|
+
} .navigation span, .navigation a {
|
144
|
+
margin-left: @buffer
|
145
|
+
} #includes .navigation span, #includes .navigation a {
|
146
|
+
margin-left: 0
|
147
|
+
} .darker {
|
148
|
+
background-color: @very_light
|
149
|
+
} #spacer {
|
150
|
+
background-color: @background
|
151
|
+
height: @buffer * 3
|
152
|
+
display: none
|
153
|
+
}
|
154
|
+
|
155
|
+
/* content area */
|
156
|
+
|
157
|
+
#content {
|
158
|
+
padding: @content_padding = 20
|
159
|
+
width: @width - @left_width - @content_padding * 2
|
160
|
+
float: left
|
161
|
+
min-height: 450px
|
162
|
+
margin: 0
|
163
|
+
margin-bottom: -4px
|
164
|
+
} #content img {
|
165
|
+
padding-top: @buffer
|
166
|
+
padding-bottom: @buffer * 2
|
167
|
+
}
|
168
|
+
|
169
|
+
#content h1, h2 {
|
170
|
+
border-top: 1px solid @very_light
|
171
|
+
} #content h1 {
|
172
|
+
padding-top: @buffer * 3
|
173
|
+
} #content #item_name { /* why does this need to be fully qualified? */
|
174
|
+
padding-top: 0
|
175
|
+
border: none
|
176
|
+
}
|
177
|
+
|
178
|
+
/* footer */
|
179
|
+
|
180
|
+
#footer {
|
181
|
+
text-align: center
|
182
|
+
background-color: @background
|
183
|
+
padding: @buffer * 3
|
184
|
+
border-top: 1px solid @very_light
|
185
|
+
color: @light
|
186
|
+
} #footer a {
|
187
|
+
font-weight: normal
|
188
|
+
color: @light
|
189
|
+
}
|
190
|
+
|
191
|
+
/* for that dumb redirect index page I can't avoid */
|
192
|
+
|
193
|
+
#redirect {
|
194
|
+
text-align: center
|
195
|
+
} #redirect a {
|
196
|
+
color: @dark
|
197
|
+
}
|
198
|
+
|
199
|
+
/* tables */
|
200
|
+
|
201
|
+
table {
|
202
|
+
width: @width - @left_width - 95
|
203
|
+
margin-right: 0
|
204
|
+
border-collapse: collapse
|
205
|
+
border: 1px solid @very_light
|
206
|
+
} td, th {
|
207
|
+
background-color: @background
|
208
|
+
text-align: left
|
209
|
+
padding: @buffer
|
210
|
+
line-height: 14px
|
211
|
+
font-size: @font_size
|
212
|
+
} td.normal {
|
213
|
+
font-family: @monospace = "Courier, Courier New, monospace"
|
214
|
+
font-size: @monospace_size = 12
|
215
|
+
} td.highlight {
|
216
|
+
color: @medium
|
217
|
+
}
|
218
|
+
|
219
|
+
/* method_block details */
|
220
|
+
|
221
|
+
div.method_block {
|
222
|
+
border-bottom: 1px solid @very_light
|
223
|
+
margin-left: 20px
|
224
|
+
margin-bottom: -17px
|
225
|
+
margin-top: 17px
|
226
|
+
} div.method_block h3 {
|
227
|
+
color: @dark
|
228
|
+
margin-left: 0
|
229
|
+
padding: 0
|
230
|
+
} #content div.method_block h1, #content #description h1 {
|
231
|
+
margin-left: @buffer
|
232
|
+
color: @light
|
233
|
+
} div.method_block a.small { /* where is this used? */
|
234
|
+
font-size: 3px
|
235
|
+
line-height: 3px
|
236
|
+
}
|
237
|
+
|
238
|
+
/* index includes on the navigation bar */
|
239
|
+
|
240
|
+
div.index a {
|
241
|
+
font-size: @font_size
|
242
|
+
} #method {
|
243
|
+
display: none
|
244
|
+
} #file, #class {
|
245
|
+
display: block
|
246
|
+
} div.list_header {
|
247
|
+
float: left
|
248
|
+
} div.list_header_link {
|
249
|
+
float: right
|
250
|
+
padding-top: 3px
|
251
|
+
} div.list_header_link a {
|
252
|
+
font-weight: normal
|
253
|
+
} div.navigation h3, .list_header_link {
|
254
|
+
margin: 0
|
255
|
+
margin-top: @buffer
|
256
|
+
margin-bottom: @buffer
|
257
|
+
padding: 0
|
258
|
+
}
|
259
|
+
|
260
|
+
.index label {
|
261
|
+
font-size: @font_size
|
262
|
+
} .index form input {
|
263
|
+
width: @left_width - @buffer * 14
|
264
|
+
} .index form {
|
265
|
+
margin-bottom: @buffer
|
266
|
+
}
|
267
|
+
|
268
|
+
ol, ul {
|
269
|
+
margin-left: @buffer
|
270
|
+
}
|
271
|
+
|
272
|
+
p.source_link a {
|
273
|
+
text-align: right
|
274
|
+
font-weight: normal
|
275
|
+
} div.source {
|
276
|
+
display: none
|
277
|
+
} pre, tt {
|
278
|
+
color: @dark
|
279
|
+
font-weight: normal
|
280
|
+
font-family: @monospace
|
281
|
+
font-size: @monospace_size
|
282
|
+
} pre {
|
283
|
+
line-height: 14px
|
284
|
+
margin-left: @buffer * 2
|
285
|
+
overflow: auto
|
286
|
+
/* next 4 lines because IE sucks */
|
287
|
+
_position: relative
|
288
|
+
_width: @width - @left_width - (@buffer * 15 + 3)
|
289
|
+
_overflow-x:scroll
|
290
|
+
_overflow-y:visible
|
291
|
+
} b tt, tt b {
|
292
|
+
font-weight: bold
|
293
|
+
} div.source g {
|
294
|
+
margin-left: 0
|
295
|
+
} p.source_link {
|
296
|
+
text-align: center
|
297
|
+
}
|
298
|
+
|
299
|
+
/* source code highlighting */
|
300
|
+
|
301
|
+
.source pre {
|
302
|
+
color: black
|
303
|
+
}
|
304
|
+
pre .ruby-value, pre .ruby-symbol {
|
305
|
+
color: @blue = "#1104bb"
|
306
|
+
} pre .ruby-value.str, pre .ruby-node {
|
307
|
+
color: @dark
|
308
|
+
} pre .ruby-ivar, pre .ruby-cvar {
|
309
|
+
} pre .ruby-comment {
|
310
|
+
color: @green = "#009500"
|
311
|
+
} pre .ruby-constant {
|
312
|
+
color: @orange = "#cd8802"
|
313
|
+
} pre .ruby-keyword {
|
314
|
+
color: @purple = "#8d04aa"
|
315
|
+
}
|