trollop 1.2 → 1.3
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/History.txt +6 -0
- data/lib/trollop.rb +10 -10
- data/test/test_trollop.rb +22 -0
- metadata +1 -1
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 1.3 / 2007-01-31
|
2
|
+
* Wrap at (screen width - 1) instead of screen width.
|
3
|
+
* User can override --help and --version.
|
4
|
+
* Bugfix in handling of -v and -h.
|
5
|
+
* More tests to confirm the above.
|
6
|
+
|
1
7
|
== 1.2 / 2007-01-31
|
2
8
|
* Minor documentation tweaks.
|
3
9
|
* Removed hoe dependency.
|
data/lib/trollop.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
module Trollop
|
7
7
|
|
8
|
-
VERSION = "1.
|
8
|
+
VERSION = "1.3"
|
9
9
|
|
10
10
|
## Thrown by Parser in the event of a commandline error. Not needed if
|
11
11
|
## you're using the Trollop::options entry.
|
@@ -78,7 +78,7 @@ class Parser
|
|
78
78
|
## * :required: if set to true, the argument must be provided on the
|
79
79
|
## commandline.
|
80
80
|
def opt name, desc="", opts={}
|
81
|
-
raise ArgumentError, "you already have an argument named #{name
|
81
|
+
raise ArgumentError, "you already have an argument named '#{name}'" if @specs.member? name
|
82
82
|
|
83
83
|
## fill in :type
|
84
84
|
opts[:type] =
|
@@ -209,18 +209,15 @@ class Parser
|
|
209
209
|
required = {}
|
210
210
|
found = {}
|
211
211
|
|
212
|
-
opt :version, "Print version and exit" if @version unless @specs[:version]
|
213
|
-
opt :help, "Show this message" unless @specs[:help]
|
212
|
+
opt :version, "Print version and exit" if @version unless @specs[:version] || @long["version"]
|
213
|
+
opt :help, "Show this message" unless @specs[:help] || @long["help"]
|
214
214
|
|
215
215
|
@specs.each do |name, opts|
|
216
216
|
required[name] = true if opts[:required]
|
217
217
|
vals[name] = opts[:default]
|
218
218
|
end
|
219
219
|
|
220
|
-
|
221
|
-
raise VersionNeeded if @version && %w(-v --version).include?(arg)
|
222
|
-
raise HelpNeeded if %w(-h --help).include?(arg)
|
223
|
-
|
220
|
+
@leftovers = each_arg args do |arg, param|
|
224
221
|
name =
|
225
222
|
case arg
|
226
223
|
when /^-([^-])$/
|
@@ -233,6 +230,9 @@ class Parser
|
|
233
230
|
raise CommandlineError, "unknown argument '#{arg}'" unless name
|
234
231
|
raise CommandlineError, "option '#{arg}' specified multiple times" if found[name]
|
235
232
|
|
233
|
+
raise VersionNeeded if name == :version
|
234
|
+
raise HelpNeeded if name == :help
|
235
|
+
|
236
236
|
found[name] = true
|
237
237
|
opts = @specs[name]
|
238
238
|
|
@@ -320,13 +320,13 @@ class Parser
|
|
320
320
|
else
|
321
321
|
""
|
322
322
|
end
|
323
|
-
stream.puts wrap(desc, :width => width - rightcol_start, :prefix => rightcol_start)
|
323
|
+
stream.puts wrap(desc, :width => width - rightcol_start - 1, :prefix => rightcol_start)
|
324
324
|
end
|
325
325
|
end
|
326
326
|
|
327
327
|
def wrap_line str, opts={} # :nodoc:
|
328
328
|
prefix = opts[:prefix] || 0
|
329
|
-
width = opts[:width] || self.width
|
329
|
+
width = opts[:width] || (self.width - 1)
|
330
330
|
start = 0
|
331
331
|
ret = []
|
332
332
|
until start > str.length
|
data/test/test_trollop.rb
CHANGED
@@ -341,6 +341,28 @@ EOM
|
|
341
341
|
assert help[1] =~ /zzz/
|
342
342
|
assert help[2] =~ /aaa/
|
343
343
|
end
|
344
|
+
|
345
|
+
def test_version_and_help_short_args_can_be_overridden
|
346
|
+
@p.opt :verbose, "desc", :short => "-v"
|
347
|
+
@p.opt :hello, "desc", :short => "-h"
|
348
|
+
@p.version "version"
|
349
|
+
|
350
|
+
assert_nothing_raised { @p.parse(%w(-v)) }
|
351
|
+
assert_raises(VersionNeeded) { @p.parse(%w(--version)) }
|
352
|
+
assert_nothing_raised { @p.parse(%w(-h)) }
|
353
|
+
assert_raises(HelpNeeded) { @p.parse(%w(--help)) }
|
354
|
+
end
|
355
|
+
|
356
|
+
def test_version_and_help_long_args_cann_be_overridden
|
357
|
+
@p.opt :asdf, "desc", :long => "help"
|
358
|
+
@p.opt :asdf2, "desc2", :long => "version"
|
359
|
+
assert_nothing_raised { @p.parse %w() }
|
360
|
+
assert_nothing_raised { @p.parse %w(--help) }
|
361
|
+
assert_nothing_raised { @p.parse %w(--version) }
|
362
|
+
assert_nothing_raised { @p.parse %w(-h) }
|
363
|
+
assert_nothing_raised { @p.parse %w(-v) }
|
364
|
+
end
|
365
|
+
|
344
366
|
end
|
345
367
|
|
346
368
|
end
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: trollop
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "1.
|
6
|
+
version: "1.3"
|
7
7
|
date: 2007-01-31 00:00:00 -08:00
|
8
8
|
summary: Trollop is YAFCLAP --- yet another fine commandline argument processing library for Ruby. Trollop is designed to provide the maximal amount of GNU-style argument processing in the minimum number of lines of code (for you, the programmer).
|
9
9
|
require_paths:
|