Pablo 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -0
- data/lib/pablo.rb +34 -8
- data/tests/help.rb +46 -15
- metadata +4 -2
data/CHANGELOG
ADDED
data/lib/pablo.rb
CHANGED
@@ -378,12 +378,18 @@ module Pablo
|
|
378
378
|
#
|
379
379
|
def version? args
|
380
380
|
return false unless @version
|
381
|
+
|
381
382
|
found = args.index { |a|
|
382
383
|
@version_aliases.any? { |v| v == a }
|
383
384
|
}
|
384
|
-
|
385
|
+
|
386
|
+
found = 0 if args.empty? and not @tokens.any? { |t|
|
387
|
+
t.default
|
388
|
+
}
|
389
|
+
|
385
390
|
return false unless found
|
386
|
-
|
391
|
+
|
392
|
+
Pablo::version @options, @version_block
|
387
393
|
return true
|
388
394
|
end
|
389
395
|
|
@@ -393,16 +399,23 @@ module Pablo
|
|
393
399
|
# - executes +Pablo::help+
|
394
400
|
# - and returns true
|
395
401
|
# otherwise only returns false.
|
402
|
+
# TODO: help and version add tokens that get default set and call these functions?
|
396
403
|
#
|
397
404
|
def help? args
|
398
405
|
return false unless @help
|
406
|
+
|
399
407
|
found = args.index { |a|
|
400
408
|
@help_aliases.any? { |h| h == a }
|
401
409
|
}
|
402
|
-
|
410
|
+
|
411
|
+
found = 0 if args.empty? and not @tokens.any? { |t|
|
412
|
+
t.default
|
413
|
+
}
|
414
|
+
|
403
415
|
return false unless found
|
416
|
+
|
404
417
|
a = args[found+1..-1] || []
|
405
|
-
Pablo::help a, @everyone, @options
|
418
|
+
Pablo::help a, @everyone, @options, @help_block
|
406
419
|
return true
|
407
420
|
end
|
408
421
|
|
@@ -413,9 +426,12 @@ module Pablo
|
|
413
426
|
# +alis+ are the aliases the help command should respond to.
|
414
427
|
# By default these are _help_, _--help_ and _-h_.
|
415
428
|
#
|
416
|
-
|
429
|
+
# +block+ will be called after the help text has been rendered.
|
430
|
+
#
|
431
|
+
def help! alis = ['help', '--help', '-h'], &block
|
417
432
|
@help = true
|
418
433
|
@help_aliases = alis
|
434
|
+
@help_block = block
|
419
435
|
end
|
420
436
|
|
421
437
|
##TODO: usage!, each token gives it's usage -> [alias1|alias2 usage]
|
@@ -427,9 +443,12 @@ module Pablo
|
|
427
443
|
# +alis+ are the aliases the version command should respond to.
|
428
444
|
# By default these are _version_, _--version_ and _-v_.
|
429
445
|
#
|
430
|
-
|
446
|
+
# +block+ will be called after the version text has been rendered.
|
447
|
+
#
|
448
|
+
def version! alis = ['version', '--version', '-v'], &block
|
431
449
|
@version = true
|
432
450
|
@version_aliases = alis
|
451
|
+
@version_block = block
|
433
452
|
end
|
434
453
|
end
|
435
454
|
|
@@ -446,7 +465,9 @@ module Pablo
|
|
446
465
|
# +options+ must be a hash of options that will be used to generate the
|
447
466
|
# output, namely +:program+, +:version+, +:usage+.
|
448
467
|
#
|
449
|
-
|
468
|
+
# +block+ must be the block to call after rendering, or nil.
|
469
|
+
#
|
470
|
+
def self.help args, tokens, options, block
|
450
471
|
msg = ""
|
451
472
|
aliases = []
|
452
473
|
tokens.each { |t| t.aliases.each { |a| aliases << [a,t] } }
|
@@ -503,6 +524,8 @@ module Pablo
|
|
503
524
|
puts "\n::Defaults" unless strs.empty?
|
504
525
|
puts strs.join ", "
|
505
526
|
end
|
527
|
+
|
528
|
+
block.call if block
|
506
529
|
end
|
507
530
|
|
508
531
|
##
|
@@ -512,9 +535,12 @@ module Pablo
|
|
512
535
|
# +options+ must be a hash of options that will be used to generate the
|
513
536
|
# output, namely +:version+, +:program+.
|
514
537
|
#
|
515
|
-
|
538
|
+
# +block+ must be the block to call after rendering, or nil.
|
539
|
+
#
|
540
|
+
def self.version options, block
|
516
541
|
puts "#{options[:program]} v#{options[:version]}" if
|
517
542
|
options[:program] and options[:version]
|
543
|
+
block.call if block
|
518
544
|
end
|
519
545
|
|
520
546
|
end
|
data/tests/help.rb
CHANGED
@@ -16,7 +16,14 @@ def message msg
|
|
16
16
|
end
|
17
17
|
|
18
18
|
class Help < Test::Unit::TestCase
|
19
|
-
|
19
|
+
def self.val
|
20
|
+
@@val
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.val= v
|
24
|
+
@@val = v
|
25
|
+
end
|
26
|
+
|
20
27
|
def assert_output
|
21
28
|
puts
|
22
29
|
print 'Does the output match? [yn] '
|
@@ -128,7 +135,6 @@ class Help < Test::Unit::TestCase
|
|
128
135
|
end
|
129
136
|
|
130
137
|
def testHelpDefault
|
131
|
-
|
132
138
|
puts
|
133
139
|
message 'Expected output: an empty help message'
|
134
140
|
message "-----------------------------------------"
|
@@ -142,24 +148,19 @@ class Help < Test::Unit::TestCase
|
|
142
148
|
assert_output
|
143
149
|
end
|
144
150
|
|
145
|
-
def
|
146
|
-
|
147
|
-
puts
|
148
|
-
message 'Expected output: a version message'
|
149
|
-
message "-----------------------------------------"
|
151
|
+
def testHelpBlock
|
152
|
+
Help.val = 0
|
150
153
|
|
151
|
-
Pablo::parse [
|
152
|
-
|
153
|
-
|
154
|
+
Pablo::parse [] do
|
155
|
+
help! do
|
156
|
+
Help.val = 12
|
157
|
+
end
|
154
158
|
end
|
155
159
|
|
156
|
-
|
157
|
-
message 'End of expected output'
|
158
|
-
assert_output
|
160
|
+
assert_equal 12, Help.val
|
159
161
|
end
|
160
162
|
|
161
163
|
def testVersion
|
162
|
-
|
163
164
|
puts
|
164
165
|
message 'Expected output: a version message'
|
165
166
|
message "-----------------------------------------"
|
@@ -174,8 +175,19 @@ class Help < Test::Unit::TestCase
|
|
174
175
|
assert_output
|
175
176
|
end
|
176
177
|
|
177
|
-
def
|
178
|
+
def testVersionBlock
|
179
|
+
Help.val = 0
|
180
|
+
|
181
|
+
Pablo::parse [] do
|
182
|
+
version! do
|
183
|
+
Help.val = 12
|
184
|
+
end
|
185
|
+
end
|
178
186
|
|
187
|
+
assert_equal 12, Help.val
|
188
|
+
end
|
189
|
+
|
190
|
+
def testVersionHelpDefault
|
179
191
|
puts
|
180
192
|
message 'Expected output: a help message'
|
181
193
|
message "-----------------------------------------"
|
@@ -195,5 +207,24 @@ class Help < Test::Unit::TestCase
|
|
195
207
|
message 'End of expected output'
|
196
208
|
assert_output
|
197
209
|
end
|
210
|
+
|
211
|
+
def testHelpVersionNonDefault
|
212
|
+
Help.val = 1
|
213
|
+
|
214
|
+
Pablo::parse [], :program => 'bacon',
|
215
|
+
:version => [0,0,1,'alpha'] do
|
216
|
+
version!
|
217
|
+
help!
|
218
|
+
|
219
|
+
command do
|
220
|
+
name 'stupid'
|
221
|
+
short_desc 'foo'
|
222
|
+
default!
|
223
|
+
run { Help.val = 2 }
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
assert_equal 2, Help.val
|
228
|
+
end
|
198
229
|
end
|
199
230
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Pablo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabian Streitel
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-01-01 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -21,9 +21,11 @@ extensions: []
|
|
21
21
|
|
22
22
|
extra_rdoc_files:
|
23
23
|
- README
|
24
|
+
- CHANGELOG
|
24
25
|
files:
|
25
26
|
- lib/pablo.rb
|
26
27
|
- README
|
28
|
+
- CHANGELOG
|
27
29
|
has_rdoc: true
|
28
30
|
homepage: http://pablo.rubyforge.org/
|
29
31
|
post_install_message:
|