slop 3.4.4 → 3.4.5
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.
- checksums.yaml +4 -4
- data/CHANGES.md +5 -0
- data/README.md +2 -2
- data/lib/slop.rb +14 -7
- data/slop.gemspec +3 -3
- data/test/helper.rb +2 -5
- data/test/slop_test.rb +22 -7
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68937e18cd6530ee2f31c7ef36a4cd7cb8259f05
|
4
|
+
data.tar.gz: bcfe723b43f378c5205b44c2b10aa063692d4241
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd370624b2039b5367c994d0c3f5cbcfad850a8f9da3972d579c7c04f53e67204d7ade792e287099a8fdd83b784e13ca4f69250a9f20d587fc876e13dcb95c5c
|
7
|
+
data.tar.gz: 5329b9d7c8c5afe7806e99fdc90bd0dd0e5da49c0b2c278df1cb9519c2cf478662911a1b5abfbee502d2dfa0927dddd3504a0fc517633ca763084b49b12fee69
|
data/CHANGES.md
CHANGED
data/README.md
CHANGED
data/lib/slop.rb
CHANGED
@@ -4,7 +4,7 @@ require 'slop/commands'
|
|
4
4
|
class Slop
|
5
5
|
include Enumerable
|
6
6
|
|
7
|
-
VERSION = '3.4.
|
7
|
+
VERSION = '3.4.5'
|
8
8
|
|
9
9
|
# The main Error class, all Exception classes inherit from this class.
|
10
10
|
class Error < StandardError; end
|
@@ -61,7 +61,7 @@ class Slop
|
|
61
61
|
# Returns a new instance of Slop.
|
62
62
|
def parse!(items = ARGV, config = {}, &block)
|
63
63
|
config, items = items, ARGV if items.is_a?(Hash) && config.empty?
|
64
|
-
slop =
|
64
|
+
slop = new config, &block
|
65
65
|
slop.parse! items
|
66
66
|
slop
|
67
67
|
end
|
@@ -511,7 +511,7 @@ class Slop
|
|
511
511
|
option.call(nil)
|
512
512
|
end
|
513
513
|
elsif config[:multiple_switches] && argument
|
514
|
-
execute_multiple_switches(option, argument, index)
|
514
|
+
execute_multiple_switches(option, argument, items, index)
|
515
515
|
else
|
516
516
|
option.value = option.count > 0
|
517
517
|
option.call(nil)
|
@@ -559,15 +559,22 @@ class Slop
|
|
559
559
|
#
|
560
560
|
# option - The first Option object.
|
561
561
|
# argument - The argument to this option. (Split into multiple Options).
|
562
|
+
# items - The Array of items currently being parsed.
|
562
563
|
# index - The index of the current item being processed.
|
563
564
|
#
|
564
565
|
# Returns nothing.
|
565
|
-
def execute_multiple_switches(option, argument, index)
|
566
|
+
def execute_multiple_switches(option, argument, items, index)
|
566
567
|
execute_option(option, nil, index)
|
567
|
-
argument.split('')
|
568
|
+
flags = argument.split('')
|
569
|
+
flags.each do |key|
|
568
570
|
next unless opt = fetch_option(key)
|
569
571
|
opt.count += 1
|
570
|
-
|
572
|
+
if (opt.expects_argument? || opt.accepts_optional_argument?) &&
|
573
|
+
(flags[-1] == opt.key) && (val = items[index+1])
|
574
|
+
execute_option(opt, val, index, key)
|
575
|
+
else
|
576
|
+
execute_option(opt, nil, index, key)
|
577
|
+
end
|
571
578
|
end
|
572
579
|
end
|
573
580
|
|
@@ -654,7 +661,7 @@ class Slop
|
|
654
661
|
# config - The Hash of configuration options built in #build_option.
|
655
662
|
def extract_long_flag(objects, config)
|
656
663
|
flag = objects.first.to_s
|
657
|
-
if flag =~ /\A(?:--?)?[a-zA-
|
664
|
+
if flag =~ /\A(?:--?)?[a-zA-Z0-9][a-zA-Z0-9_.-]+\=?\??\z/
|
658
665
|
config[:argument] ||= true if flag.end_with?('=')
|
659
666
|
config[:optional_argument] = true if flag.end_with?('=?')
|
660
667
|
objects.shift
|
data/slop.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'slop'
|
3
|
-
s.version = '3.4.
|
3
|
+
s.version = '3.4.5'
|
4
4
|
s.summary = 'Simple Lightweight Option Parsing'
|
5
5
|
s.description = 'A simple DSL for gathering options and parsing the command line'
|
6
6
|
s.author = 'Lee Jarvis'
|
7
|
-
s.email = '
|
7
|
+
s.email = 'ljjarvis@gmail.com'
|
8
8
|
s.homepage = 'http://github.com/injekt/slop'
|
9
9
|
s.files = `git ls-files`.split("\n")
|
10
10
|
s.test_files = `git ls-files -- test/*`.split("\n")
|
@@ -13,5 +13,5 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.required_ruby_version = '>= 1.8.7'
|
14
14
|
|
15
15
|
s.add_development_dependency 'rake'
|
16
|
-
s.add_development_dependency 'minitest'
|
16
|
+
s.add_development_dependency 'minitest', '~> 5.0.0'
|
17
17
|
end
|
data/test/helper.rb
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
$VERBOSE = true
|
2
2
|
|
3
|
-
|
4
|
-
$:.unshift File.expand_path('../../lib', __FILE__)
|
5
|
-
require 'slop'
|
6
|
-
end
|
3
|
+
require 'slop'
|
7
4
|
|
8
5
|
require 'minitest/autorun'
|
9
6
|
require 'stringio'
|
10
7
|
|
11
|
-
class TestCase <
|
8
|
+
class TestCase < Minitest::Test
|
12
9
|
def self.test(name, &block)
|
13
10
|
define_method("test_#{name.gsub(/\W/, '_')}", &block) if block
|
14
11
|
end
|
data/test/slop_test.rb
CHANGED
@@ -36,6 +36,7 @@ class SlopTest < TestCase
|
|
36
36
|
assert_equal [nil, 'foo', nil, {}], build_option(:foo)
|
37
37
|
assert_equal ['f', nil, 'Some description', {}], build_option(:f, 'Some description')
|
38
38
|
assert_equal ['f', 'foo', nil, {}], build_option(:f, :foo)
|
39
|
+
assert_equal [nil, '1.8', 'Use v. 1.8', {}], build_option('--1.8', 'Use v. 1.8')
|
39
40
|
|
40
41
|
# with arguments
|
41
42
|
assert_equal ['f', nil, nil, {:argument=>true}], build_option('f=')
|
@@ -131,9 +132,11 @@ class SlopTest < TestCase
|
|
131
132
|
end
|
132
133
|
|
133
134
|
test "default help exits" do
|
134
|
-
|
135
|
-
|
136
|
-
|
135
|
+
temp_stdout do
|
136
|
+
slop = Slop.new :help => true
|
137
|
+
assert_raises SystemExit do
|
138
|
+
slop.parse %w/--help/
|
139
|
+
end
|
137
140
|
end
|
138
141
|
end
|
139
142
|
|
@@ -244,6 +247,12 @@ class SlopTest < TestCase
|
|
244
247
|
assert_equal %w'foo', args
|
245
248
|
end
|
246
249
|
|
250
|
+
test "multiple options should still accept trailing arguments" do
|
251
|
+
opts = Slop.new { on :a; on :b= }
|
252
|
+
opts.parse %w'-ab foo'
|
253
|
+
assert_equal 'foo', opts[:b]
|
254
|
+
end
|
255
|
+
|
247
256
|
test "setting/getting the banner" do
|
248
257
|
opts = Slop.new :banner => 'foo'
|
249
258
|
assert_equal 'foo', opts.banner
|
@@ -339,13 +348,17 @@ class SlopTest < TestCase
|
|
339
348
|
test "printing help with :help => true" do
|
340
349
|
temp_stdout do |string|
|
341
350
|
opts = Slop.new(:help => true, :banner => false)
|
342
|
-
|
351
|
+
assert_raises SystemExit do
|
352
|
+
opts.parse %w( --help )
|
353
|
+
end
|
343
354
|
assert_equal " -h, --help Display this help message.\n", string
|
344
355
|
end
|
345
356
|
|
346
357
|
temp_stdout do |string|
|
347
358
|
opts = Slop.new(:help => true)
|
348
|
-
|
359
|
+
assert_raises SystemExit do
|
360
|
+
opts.parse %w( --help )
|
361
|
+
end
|
349
362
|
assert_equal "Usage: rake_test_loader [options]\n -h, --help Display this help message.\n", string
|
350
363
|
end
|
351
364
|
end
|
@@ -463,8 +476,10 @@ class SlopTest < TestCase
|
|
463
476
|
assert_equal %w'--help foo bar', items
|
464
477
|
items.clear
|
465
478
|
temp_stdout do
|
466
|
-
|
467
|
-
|
479
|
+
assert_raises SystemExit do
|
480
|
+
Slop.parse(%w'--help foo bar', :help => true) do
|
481
|
+
run { |o, a| items.concat a }
|
482
|
+
end
|
468
483
|
end
|
469
484
|
assert_empty items
|
470
485
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.
|
4
|
+
version: 3.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lee Jarvis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -28,18 +28,18 @@ dependencies:
|
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 5.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 5.0.0
|
41
41
|
description: A simple DSL for gathering options and parsing the command line
|
42
|
-
email:
|
42
|
+
email: ljjarvis@gmail.com
|
43
43
|
executables: []
|
44
44
|
extensions: []
|
45
45
|
extra_rdoc_files: []
|
@@ -79,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
79
|
version: '0'
|
80
80
|
requirements: []
|
81
81
|
rubyforge_project:
|
82
|
-
rubygems_version: 2.0.
|
82
|
+
rubygems_version: 2.0.3
|
83
83
|
signing_key:
|
84
84
|
specification_version: 4
|
85
85
|
summary: Simple Lightweight Option Parsing
|