slop 4.7.0 → 4.8.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.
- checksums.yaml +4 -4
- data/.travis.yml +7 -4
- data/CHANGELOG.md +14 -0
- data/lib/slop.rb +1 -1
- data/lib/slop/options.rb +4 -4
- data/lib/slop/parser.rb +0 -1
- data/lib/slop/types.rb +4 -3
- data/test/option_test.rb +2 -2
- data/test/options_test.rb +2 -2
- data/test/types_test.rb +32 -2
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3519c62b207c9004fe10decdefafc6f429540355aaf42d6d001b726524546935
|
4
|
+
data.tar.gz: f23973419fa0e1bbed6f7e3f1925ccfee2b28e3c87db57aa19f76b5df5c984c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5658a5eee5fbd320aa88de052f6d0c6345be8f73d7d40ac22b4fdebfd157b72ae3ce02c279848acb62a6ca7819318800cc3c68abe3e40499f886368d6a7798c7
|
7
|
+
data.tar.gz: 9d61f5fa3f804092ea4b56103ba509dc6392701f3260190f32d4d3e807fbb75c622c23c7b30b1b71adecedef15d3da82d7ab20bd648c4642ebe637f9dd4b41d1
|
data/.travis.yml
CHANGED
@@ -13,12 +13,15 @@ rvm:
|
|
13
13
|
- 2.1
|
14
14
|
- 2.2
|
15
15
|
- 2.3.4
|
16
|
-
- 2.4.
|
17
|
-
- 2.5.
|
18
|
-
- 2.6.
|
19
|
-
-
|
16
|
+
- 2.4.9
|
17
|
+
- 2.5.7
|
18
|
+
- 2.6.5
|
19
|
+
- 2.7.0
|
20
|
+
- jruby-9.2.9.0
|
20
21
|
- jruby-head
|
21
22
|
- ruby-head
|
23
|
+
jdk:
|
24
|
+
- openjdk8
|
22
25
|
notifications:
|
23
26
|
email:
|
24
27
|
on_success: change
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,26 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
v4.8.0 (2020-01-17)
|
5
|
+
-------------------
|
6
|
+
|
7
|
+
Features:
|
8
|
+
* Add support for prefixing integer values with `+` character
|
9
|
+
[#243](https://github.com/leejarvis/slop/pull/243) (Juha Ylitalo)
|
10
|
+
* Add support for parsing floats with scientific notation
|
11
|
+
[#250](https://github.com/leejarvis/slop/pull/250) (Hansuk Hong)
|
12
|
+
|
13
|
+
Maintenance:
|
14
|
+
* Add 2.7.0 to CI and fix warnings
|
15
|
+
[#248](https://github.com/leejarvis/slop/pull/248) (Juha Ylitalo, Andrew Kane)
|
16
|
+
|
4
17
|
v4.7.0 (2019-06-29)
|
5
18
|
-------------------
|
6
19
|
|
7
20
|
Features:
|
8
21
|
* Add `Slop::Result#fetch`. It returns the value of given option, or raises an error if given option is not present. [#232](https://github.com/leejarvis/slop/pull/232) ([Giovanni Benussi](https://github.com/giovannibenussi))
|
9
22
|
* Adding a separator without passing any arguments now creates a separator with the empty string. [#238](https://github.com/leejarvis/slop/pull/238) ([Teemu Matilainen](https://github.com/tmatilai))
|
23
|
+
|
10
24
|
Bug fixes
|
11
25
|
* Ensure non-string option types have their flags consumed properly [#241] (Sutou Kouhei)
|
12
26
|
|
data/lib/slop.rb
CHANGED
data/lib/slop/options.rb
CHANGED
@@ -24,12 +24,12 @@ module Slop
|
|
24
24
|
# The String banner prefixed to the help string.
|
25
25
|
attr_accessor :banner
|
26
26
|
|
27
|
-
def initialize(**config)
|
27
|
+
def initialize(**config, &block)
|
28
28
|
@options = []
|
29
29
|
@separators = []
|
30
30
|
@banner = config[:banner].is_a?(String) ? config[:banner] : config.fetch(:banner, "usage: #{$0} [options]")
|
31
31
|
@config = DEFAULT_CONFIG.merge(config)
|
32
|
-
@parser = Parser.new(self,
|
32
|
+
@parser = Parser.new(self, **@config)
|
33
33
|
|
34
34
|
yield self if block_given?
|
35
35
|
end
|
@@ -52,7 +52,7 @@ module Slop
|
|
52
52
|
desc = flags.pop unless flags.last.start_with?('-')
|
53
53
|
config = self.config.merge(config)
|
54
54
|
klass = Slop.string_to_option_class(config[:type].to_s)
|
55
|
-
option = klass.new(flags, desc, config, &block)
|
55
|
+
option = klass.new(flags, desc, **config, &block)
|
56
56
|
|
57
57
|
add_option option
|
58
58
|
end
|
@@ -82,7 +82,7 @@ module Slop
|
|
82
82
|
def method_missing(name, *args, **config, &block)
|
83
83
|
if respond_to_missing?(name)
|
84
84
|
config[:type] = name
|
85
|
-
on(*args, config, &block)
|
85
|
+
on(*args, **config, &block)
|
86
86
|
else
|
87
87
|
super
|
88
88
|
end
|
data/lib/slop/parser.rb
CHANGED
data/lib/slop/types.rb
CHANGED
@@ -44,16 +44,17 @@ module Slop
|
|
44
44
|
# Cast the option argument to an Integer.
|
45
45
|
class IntegerOption < Option
|
46
46
|
def call(value)
|
47
|
-
value =~ /\A
|
47
|
+
value =~ /\A[+-]?\d+\z/ && value.to_i
|
48
48
|
end
|
49
49
|
end
|
50
50
|
IntOption = IntegerOption
|
51
51
|
|
52
52
|
# Cast the option argument to a Float.
|
53
53
|
class FloatOption < Option
|
54
|
+
FLOAT_STRING_REGEXP = /\A[+-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?\z/.freeze
|
55
|
+
|
54
56
|
def call(value)
|
55
|
-
|
56
|
-
value =~ /\A-?\d*\.*\d+\z/ && value.to_f
|
57
|
+
value =~ FLOAT_STRING_REGEXP && value.to_f
|
57
58
|
end
|
58
59
|
end
|
59
60
|
|
data/test/option_test.rb
CHANGED
data/test/options_test.rb
CHANGED
@@ -121,11 +121,11 @@ describe Slop::Options do
|
|
121
121
|
|
122
122
|
describe "custom banner" do
|
123
123
|
it "is prefixed with defined banner" do
|
124
|
-
@options_config = Slop::Options.new({banner: "custom banner"})
|
124
|
+
@options_config = Slop::Options.new(**{banner: "custom banner"})
|
125
125
|
assert_match(/^custom banner/, @options_config.to_s)
|
126
126
|
end
|
127
127
|
it "banner is disabled" do
|
128
|
-
@options_config = Slop::Options.new({banner: false})
|
128
|
+
@options_config = Slop::Options.new(**{banner: false})
|
129
129
|
assert_match("", @options_config.to_s)
|
130
130
|
end
|
131
131
|
end
|
data/test/types_test.rb
CHANGED
@@ -32,11 +32,15 @@ describe Slop::IntegerOption do
|
|
32
32
|
before do
|
33
33
|
@options = Slop::Options.new
|
34
34
|
@age = @options.integer "--age"
|
35
|
-
@
|
35
|
+
@minus = @options.integer "--minus"
|
36
|
+
@plus = @options.integer "--plus"
|
37
|
+
@result = @options.parse %w(--age 20 --minus -10 --plus +30)
|
36
38
|
end
|
37
39
|
|
38
40
|
it "returns the value as an integer" do
|
39
41
|
assert_equal 20, @result[:age]
|
42
|
+
assert_equal (-10), @result[:minus]
|
43
|
+
assert_equal 30, @result[:plus]
|
40
44
|
end
|
41
45
|
|
42
46
|
it "returns nil for non-numbers by default" do
|
@@ -50,11 +54,37 @@ describe Slop::FloatOption do
|
|
50
54
|
@options = Slop::Options.new
|
51
55
|
@apr = @options.float "--apr"
|
52
56
|
@apr_value = 2.9
|
53
|
-
@
|
57
|
+
@minus = @options.float "--minus"
|
58
|
+
@plus = @options.float "--plus"
|
59
|
+
@scientific_notation = @options.float "--scientific-notation"
|
60
|
+
@scientific_notation_value = 4e21
|
61
|
+
@result = @options.parse %W(--apr #{@apr_value} --minus -6.1 --plus +9.4 --scientific-notation #{@scientific_notation_value})
|
54
62
|
end
|
55
63
|
|
56
64
|
it "returns the value as a float" do
|
57
65
|
assert_equal @apr_value, @result[:apr]
|
66
|
+
assert_equal (-6.1), @result[:minus]
|
67
|
+
assert_equal 9.4, @result[:plus]
|
68
|
+
end
|
69
|
+
|
70
|
+
it "parses scientific notations" do
|
71
|
+
assert_equal @scientific_notation_value, @result[:scientific_notation]
|
72
|
+
|
73
|
+
@scientific_notation_value = 4E21
|
74
|
+
@result = @options.parse %W(--scientific-notation #{@scientific_notation_value})
|
75
|
+
assert_equal @scientific_notation_value, @result[:scientific_notation]
|
76
|
+
|
77
|
+
@scientific_notation_value = 4.0e21
|
78
|
+
@result = @options.parse %W(--scientific-notation #{@scientific_notation_value})
|
79
|
+
assert_equal @scientific_notation_value, @result[:scientific_notation]
|
80
|
+
|
81
|
+
@scientific_notation_value = -4e21
|
82
|
+
@result = @options.parse %W(--scientific-notation #{@scientific_notation_value})
|
83
|
+
assert_equal @scientific_notation_value, @result[:scientific_notation]
|
84
|
+
|
85
|
+
@scientific_notation_value = 4e-21
|
86
|
+
@result = @options.parse %W(--scientific-notation #{@scientific_notation_value})
|
87
|
+
assert_equal @scientific_notation_value, @result[:scientific_notation]
|
58
88
|
end
|
59
89
|
|
60
90
|
it "returns nil for non-numbers by default" do
|
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: 4.
|
4
|
+
version: 4.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lee Jarvis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -86,8 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
86
|
- !ruby/object:Gem::Version
|
87
87
|
version: '0'
|
88
88
|
requirements: []
|
89
|
-
|
90
|
-
rubygems_version: 2.7.6
|
89
|
+
rubygems_version: 3.0.3
|
91
90
|
signing_key:
|
92
91
|
specification_version: 4
|
93
92
|
summary: Simple Lightweight Option Parsing
|