Pablo 0.0.2 → 0.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/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:
|