yawpa 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ Y2ViMTM4ZWVlZDBjNTNjMDUyMjEwNWJjZDMzMzhmODUxYTg4Y2I1YQ==
5
+ data.tar.gz: !binary |-
6
+ ZThmNmVjMDYzZTg4NjYxNDVlNjIwODgxYjRiZjc4N2NhYmUwMGY3Yw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ NjU4MDQwOWQ0ODk2MmEyMjVkZWI5NDQxMDg4OTI5NmY3MzcxZDNiNjJkMzNl
10
+ NDE1ZjFlMDYwYTA0NzA3ODY5M2JjZDBmYTljNjY0MjJhYzA3MzExNDYzYWU2
11
+ NzdhOGFkYTQ5YWQwMjcxNWE1MWRlOGYzYzFlMWRlNTczZjkyMGU=
12
+ data.tar.gz: !binary |-
13
+ YWRhNGM2MTZhMzljODM1Njc0YWE1ZGU4NDgxODMzYzBiYzdmMjA2ZWQ3M2Zm
14
+ OTFmNjZhNjM4NmRhOWE5YTRiYTY1YzczZWNiN2RkODk3ZGE5MzQ3OGIyYTdi
15
+ Y2Q3ZmI2N2Y4ZTM1ZWQyNDNiZmI0NzI2OTllMGYxYTMwNDIwMDk=
data/Gemfile.lock CHANGED
@@ -1,37 +1,37 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yawpa (1.1.0)
4
+ yawpa (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  diff-lcs (1.2.5)
10
10
  docile (1.1.5)
11
- json (1.8.1)
12
- multi_json (1.10.1)
13
- rake (10.3.2)
14
- rdoc (4.1.1)
11
+ json (1.8.3)
12
+ rake (10.4.2)
13
+ rdoc (4.2.2)
15
14
  json (~> 1.4)
16
- redcarpet (3.1.2)
17
- rspec (3.0.0)
18
- rspec-core (~> 3.0.0)
19
- rspec-expectations (~> 3.0.0)
20
- rspec-mocks (~> 3.0.0)
21
- rspec-core (3.0.2)
22
- rspec-support (~> 3.0.0)
23
- rspec-expectations (3.0.2)
15
+ redcarpet (3.3.4)
16
+ rspec (3.4.0)
17
+ rspec-core (~> 3.4.0)
18
+ rspec-expectations (~> 3.4.0)
19
+ rspec-mocks (~> 3.4.0)
20
+ rspec-core (3.4.4)
21
+ rspec-support (~> 3.4.0)
22
+ rspec-expectations (3.4.0)
24
23
  diff-lcs (>= 1.2.0, < 2.0)
25
- rspec-support (~> 3.0.0)
26
- rspec-mocks (3.0.2)
27
- rspec-support (~> 3.0.0)
28
- rspec-support (3.0.2)
29
- simplecov (0.8.2)
24
+ rspec-support (~> 3.4.0)
25
+ rspec-mocks (3.4.1)
26
+ diff-lcs (>= 1.2.0, < 2.0)
27
+ rspec-support (~> 3.4.0)
28
+ rspec-support (3.4.1)
29
+ simplecov (0.11.2)
30
30
  docile (~> 1.1.0)
31
- multi_json
32
- simplecov-html (~> 0.8.0)
33
- simplecov-html (0.8.0)
34
- yard (0.8.7.4)
31
+ json (~> 1.8)
32
+ simplecov-html (~> 0.10.0)
33
+ simplecov-html (0.10.0)
34
+ yard (0.8.7.6)
35
35
 
36
36
  PLATFORMS
37
37
  ruby
@@ -44,3 +44,6 @@ DEPENDENCIES
44
44
  simplecov
45
45
  yard
46
46
  yawpa!
47
+
48
+ BUNDLED WITH
49
+ 1.10.6
data/README.md CHANGED
@@ -109,6 +109,10 @@ options that were not processed after observing a non-option parameters).
109
109
 
110
110
  ## Release Notes
111
111
 
112
+ ### v1.2.0
113
+
114
+ - Always return non-frozen strings
115
+
112
116
  ### v1.1.0
113
117
 
114
118
  - Add `:boolean` option flag.
data/lib/yawpa/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Yawpa
2
2
  # gem version
3
- VERSION = "1.1.0"
3
+ VERSION = "1.2.0"
4
4
  end
data/lib/yawpa.rb CHANGED
@@ -13,179 +13,190 @@ require "yawpa/version"
13
13
  # - Options can be defined with a range specifying the allowed number of
14
14
  # parameters
15
15
  module Yawpa
16
+
16
17
  # Exception class raised when an unknown option is observed.
17
18
  class ArgumentParsingException < Exception; end
18
19
 
19
- # Parse input parameters looking for options according to rules given in
20
- # flags.
21
- # Syntax:
22
- # opts, args = parse(params, options, flags = {})
23
- #
24
- # An ArgumentParsingException will be raised if an unknown option is observed
25
- # or insufficient arguments are present for an option.
26
- #
27
- # Example +options+:
28
- #
29
- # {
30
- # version: nil,
31
- # verbose: {short: 'v'},
32
- # server: {nargs: (1..2)},
33
- # username: {nargs: 1},
34
- # password: {nargs: 1},
35
- # color: :boolean,
36
- # }
37
- #
38
- # The keys of the +options+ Hash can be either strings or symbols.
39
- #
40
- #
41
- # @param params [Array]
42
- # List of program parameters to parse.
43
- # @param options [Hash]
44
- # Hash containing the long option names as keys, and values containing
45
- # special flags for the options as values (examples above).
46
- # Possible values:
47
- # +nil+:: No special flags for this option (equivalent to +{}+)
48
- # +:boolean+::
49
- # The option is a toggleable boolean option (equivalent to
50
- # +{boolean: true}+)
51
- # Hash::
52
- # Possible option flags:
53
- # - +:short+: specify a short option letter to associate with the long option
54
- # - +:nargs+: specify an exact number or range of possible numbers of
55
- # arguments to the option
56
- # - +:boolean+: if true, specify that the option is a toggleable boolean
57
- # option and allow a prefix of "no" to turn it off.
58
- # @param flags [Hash]
59
- # Optional flags dictating how {.parse} should do its job.
60
- # @option flags [Boolean] :posix_order
61
- # Stop processing parameters when a non-option argument is seen.
62
- # Set this to +true+ if you want to implement subcommands.
63
- #
64
- # @return [Array]
65
- # Two-element array containing +opts+ and +args+ return values.
66
- # +opts+::
67
- # The returned +opts+ value will be a Hash with the observed
68
- # options as keys and any option arguments as values.
69
- # +args+::
70
- # The returned +args+ will be an Array of the unprocessed
71
- # parameters (if +:posix_order+ was passed in +flags+, this array might
72
- # contain further options that were not processed after observing a
73
- # non-option parameters).
74
- def self.parse(params, options, flags = {})
75
- options = _massage_options(options)
76
- opts = {}
77
- args = []
78
- i = 0
79
- while i < params.length
80
- param = params[i]
81
- if param =~ /^--([^=]+)(?:=(.+))?$/
82
- param_name, val = $1, $2
83
- bool_val = true
84
- if options[param_name].nil?
85
- if param_name =~ /^no(.*)$/
86
- test_param_name = $1
87
- if options[test_param_name]
88
- param_name = test_param_name
89
- bool_val = false
20
+ class << self
21
+
22
+ # Parse input parameters looking for options according to rules given in
23
+ # flags.
24
+ # Syntax:
25
+ # opts, args = parse(params, options, flags = {})
26
+ #
27
+ # An ArgumentParsingException will be raised if an unknown option is
28
+ # observed or insufficient arguments are present for an option.
29
+ #
30
+ # Example +options+:
31
+ #
32
+ # {
33
+ # version: nil,
34
+ # verbose: {short: 'v'},
35
+ # server: {nargs: (1..2)},
36
+ # username: {nargs: 1},
37
+ # password: {nargs: 1},
38
+ # color: :boolean,
39
+ # }
40
+ #
41
+ # The keys of the +options+ Hash can be either strings or symbols.
42
+ #
43
+ #
44
+ # @param params [Array]
45
+ # List of program parameters to parse.
46
+ # @param options [Hash]
47
+ # Hash containing the long option names as keys, and values containing
48
+ # special flags for the options as values (examples above).
49
+ # Possible values:
50
+ # +nil+:: No special flags for this option (equivalent to +{}+)
51
+ # +:boolean+::
52
+ # The option is a toggleable boolean option (equivalent to
53
+ # +{boolean: true}+)
54
+ # Hash::
55
+ # Possible option flags:
56
+ # - +:short+: specify a short option letter to associate with the long
57
+ # option
58
+ # - +:nargs+: specify an exact number or range of possible numbers of
59
+ # arguments to the option
60
+ # - +:boolean+: if true, specify that the option is a toggleable
61
+ # boolean option and allow a prefix of "no" to turn it off.
62
+ # @param flags [Hash]
63
+ # Optional flags dictating how {.parse} should do its job.
64
+ # @option flags [Boolean] :posix_order
65
+ # Stop processing parameters when a non-option argument is seen.
66
+ # Set this to +true+ if you want to implement subcommands.
67
+ #
68
+ # @return [Array]
69
+ # Two-element array containing +opts+ and +args+ return values.
70
+ # +opts+::
71
+ # The returned +opts+ value will be a Hash with the observed
72
+ # options as keys and any option arguments as values.
73
+ # +args+::
74
+ # The returned +args+ will be an Array of the unprocessed
75
+ # parameters (if +:posix_order+ was passed in +flags+, this array might
76
+ # contain further options that were not processed after observing a
77
+ # non-option parameters).
78
+ def parse(params, options, flags = {})
79
+ options = _massage_options(options)
80
+ opts = {}
81
+ args = []
82
+ i = 0
83
+ while i < params.length
84
+ param = params[i]
85
+ if param =~ /^--([^=]+)(?:=(.+))?$/
86
+ param_name, val = $1, $2
87
+ bool_val = true
88
+ if options[param_name].nil?
89
+ if param_name =~ /^no(.*)$/
90
+ test_param_name = $1
91
+ if options[test_param_name]
92
+ param_name = test_param_name
93
+ bool_val = false
94
+ end
90
95
  end
91
96
  end
92
- end
93
- opt_config = options[param_name]
94
- raise ArgumentParsingException.new("Unknown option '#{param_name}'") unless opt_config
95
- param_key = opt_config[:key]
96
- if opt_config[:boolean]
97
- opts[param_key] = bool_val
98
- elsif opt_config[:nargs].last == 0
99
- opts[param_key] = true
100
- else
101
- opts[param_key] = []
102
- i += _gather(opt_config[:nargs], i + 1, params, val, param_key, opts[param_key])
103
- end
104
- elsif param =~ /^-(.+)$/
105
- short_flags = $1
106
- short_idx = 0
107
- while short_idx < short_flags.length
108
- opt_config = _find_opt_config_by_short_name(options, short_flags[short_idx])
109
- if opt_config.nil?
110
- raise ArgumentParsingException.new("Unknown option '-#{short_flags[short_idx]}'")
111
- end
97
+ opt_config = options[param_name]
98
+ raise ArgumentParsingException.new("Unknown option '#{param_name}'") unless opt_config
112
99
  param_key = opt_config[:key]
113
- if opt_config[:nargs].last == 0
100
+ if opt_config[:boolean]
101
+ opts[param_key] = bool_val
102
+ elsif opt_config[:nargs].last == 0
114
103
  opts[param_key] = true
115
104
  else
116
105
  opts[param_key] = []
117
- i += _gather(opt_config[:nargs], i + 1, params, short_flags[short_idx + 1, short_flags.length], param_key, opts[param_key])
118
- break
106
+ i += _gather(opt_config[:nargs], i + 1, params, val, param_key, opts[param_key])
119
107
  end
120
- short_idx += 1
108
+ elsif param =~ /^-(.+)$/
109
+ short_flags = $1
110
+ short_idx = 0
111
+ while short_idx < short_flags.length
112
+ opt_config = _find_opt_config_by_short_name(options, short_flags[short_idx])
113
+ if opt_config.nil?
114
+ raise ArgumentParsingException.new("Unknown option '-#{short_flags[short_idx]}'")
115
+ end
116
+ param_key = opt_config[:key]
117
+ if opt_config[:nargs].last == 0
118
+ opts[param_key] = true
119
+ else
120
+ opts[param_key] = []
121
+ i += _gather(opt_config[:nargs],
122
+ i + 1,
123
+ params,
124
+ short_flags[short_idx + 1, short_flags.length],
125
+ param_key,
126
+ opts[param_key])
127
+ break
128
+ end
129
+ short_idx += 1
130
+ end
131
+ elsif flags[:posix_order]
132
+ args = params[i, params.length].map(&:dup)
133
+ break
134
+ else
135
+ args << params[i].dup
121
136
  end
122
- elsif flags[:posix_order]
123
- args = params[i, params.length]
124
- break
125
- else
126
- args << params[i]
137
+ i += 1
127
138
  end
128
- i += 1
129
- end
130
139
 
131
- # Condense 1-element arrays of option values to just the element itself
132
- opts.each_key do |k|
133
- if opts[k].is_a?(Array) and opts[k].length == 1
134
- opts[k] = opts[k].first
140
+ # Condense 1-element arrays of option values to just the element itself
141
+ opts.each_key do |k|
142
+ if opts[k].is_a?(Array) and opts[k].length == 1
143
+ opts[k] = opts[k].first
144
+ end
135
145
  end
146
+
147
+ return [opts, args]
136
148
  end
137
149
 
138
- return [opts, args]
139
- end
150
+ private
140
151
 
141
- # Internal helper method to gather arguments for an option
142
- def self._gather(nargs, start_idx, params, initial, param_key, result)
143
- n_gathered = 0
144
- if initial and initial != ''
145
- result << initial
146
- n_gathered += 1
147
- end
148
- num_indices_used = 0
149
- index = start_idx
150
- while n_gathered < nargs.last and
151
- index < params.length and
152
- params[index][0] != '-' do
153
- result << params[index]
154
- index += 1
155
- num_indices_used += 1
156
- n_gathered += 1
152
+ # Internal helper method to gather arguments for an option
153
+ def _gather(nargs, start_idx, params, initial, param_key, result)
154
+ n_gathered = 0
155
+ if initial and initial != ''
156
+ result << initial
157
+ n_gathered += 1
158
+ end
159
+ num_indices_used = 0
160
+ index = start_idx
161
+ while n_gathered < nargs.last and
162
+ index < params.length and
163
+ params[index][0] != '-' do
164
+ result << params[index].dup
165
+ index += 1
166
+ num_indices_used += 1
167
+ n_gathered += 1
168
+ end
169
+ if n_gathered < nargs.first
170
+ raise ArgumentParsingException.new("Not enough arguments supplied for option '#{param_key}'")
171
+ end
172
+ num_indices_used
157
173
  end
158
- if n_gathered < nargs.first
159
- raise ArgumentParsingException.new("Not enough arguments supplied for option '#{param_key}'")
174
+
175
+ # Internal helper method to format the options in a consistent format
176
+ def _massage_options(options)
177
+ {}.tap do |newopts|
178
+ options.each_pair do |k, v|
179
+ v = {} if v.nil?
180
+ v = {boolean: true} if v == :boolean
181
+ newkey = k.to_s
182
+ newopts[newkey] = {key: k}
183
+ nargs = v[:nargs] || 0
184
+ nargs = (nargs..nargs) if nargs.is_a?(Fixnum)
185
+ newopts[newkey][:nargs] = nargs
186
+ newopts[newkey][:short] = v[:short] || ''
187
+ newopts[newkey][:boolean] = v[:boolean]
188
+ end
189
+ end
160
190
  end
161
- num_indices_used
162
- end
163
- private_class_method :_gather
164
191
 
165
- # Internal helper method to format the options in a consistent format
166
- def self._massage_options(options)
167
- {}.tap do |newopts|
192
+ # Internal helper method to find an option configuration by short name
193
+ def _find_opt_config_by_short_name(options, short_name)
168
194
  options.each_pair do |k, v|
169
- v = {} if v.nil?
170
- v = {boolean: true} if v == :boolean
171
- newkey = k.to_s
172
- newopts[newkey] = {key: k}
173
- nargs = v[:nargs] || 0
174
- nargs = (nargs..nargs) if nargs.is_a?(Fixnum)
175
- newopts[newkey][:nargs] = nargs
176
- newopts[newkey][:short] = v[:short] || ''
177
- newopts[newkey][:boolean] = v[:boolean]
195
+ return v if v[:short] == short_name
178
196
  end
197
+ nil
179
198
  end
180
- end
181
- private_class_method :_massage_options
182
199
 
183
- # Internal helper method to find an option configuration by short name
184
- def self._find_opt_config_by_short_name(options, short_name)
185
- options.each_pair do |k, v|
186
- return v if v[:short] == short_name
187
- end
188
- nil
189
200
  end
190
- private_class_method :_find_opt_config_by_short_name
201
+
191
202
  end
data/spec/yawpa_spec.rb CHANGED
@@ -11,7 +11,7 @@ describe Yawpa do
11
11
  it "raises an exception when an invalid option is passed" do
12
12
  options = { }
13
13
  params = ['one', '--option', 'two']
14
- expect { Yawpa.parse(params, options) }.to raise_error
14
+ expect { Yawpa.parse(params, options) }.to raise_error(Yawpa::ArgumentParsingException, /Unknown option/)
15
15
  end
16
16
 
17
17
  it "returns boolean options which are set" do
@@ -53,7 +53,7 @@ describe Yawpa do
53
53
  opt: {nargs: 2},
54
54
  }
55
55
  params = ['--opt', 'val']
56
- expect { Yawpa.parse(params, options) }.to raise_error
56
+ expect { Yawpa.parse(params, options) }.to raise_error(Yawpa::ArgumentParsingException, /Not enough arguments supplied/)
57
57
  end
58
58
 
59
59
  it "uses --opt=val syntax for an option's value" do
@@ -179,7 +179,7 @@ describe Yawpa do
179
179
  a: {short: 'a'},
180
180
  }
181
181
  params = ['-ab']
182
- expect { Yawpa.parse(params, options) }.to raise_error
182
+ expect { Yawpa.parse(params, options) }.to raise_error(Yawpa::ArgumentParsingException, /Unknown option/)
183
183
  end
184
184
 
185
185
  it "raises an error when not enough arguments are given to short option" do
@@ -187,7 +187,7 @@ describe Yawpa do
187
187
  a: {nargs: 1, short: 'a'},
188
188
  }
189
189
  params = ['-a']
190
- expect { Yawpa.parse(params, options) }.to raise_error
190
+ expect { Yawpa.parse(params, options) }.to raise_error(Yawpa::ArgumentParsingException, /Not enough arguments supplied/)
191
191
  end
192
192
 
193
193
  it "overwrites option value when short option used after long" do
@@ -230,5 +230,32 @@ describe Yawpa do
230
230
  expect(opts).to eq(push: false, pull: true)
231
231
  expect(args).to eq(%w[arg])
232
232
  end
233
+
234
+ it "returns non-frozen strings" do
235
+ options = {
236
+ o1: {nargs: 1, short: "1"},
237
+ o2: {nargs: 1, short: "2"},
238
+ o3: {nargs: 1, short: "3"},
239
+ o4: {nargs: 1, short: "4"},
240
+ }
241
+
242
+ arguments = %w[--o1=one --o2 two -3 three -4four arg].map(&:freeze)
243
+
244
+ opts, args = Yawpa.parse(arguments, options)
245
+ expect(opts[:o1].frozen?).to be_falsey
246
+ expect{opts[:o1].sub!(/./, '-')}.to_not raise_error
247
+ expect(opts[:o2].frozen?).to be_falsey
248
+ expect{opts[:o2].sub!(/./, '-')}.to_not raise_error
249
+ expect(opts[:o3].frozen?).to be_falsey
250
+ expect{opts[:o3].sub!(/./, '-')}.to_not raise_error
251
+ expect(opts[:o4].frozen?).to be_falsey
252
+ expect{opts[:o4].sub!(/./, '-')}.to_not raise_error
253
+ expect(args[0].frozen?).to be_falsey
254
+ expect{args[0].sub!(/./, '-')}.to_not raise_error
255
+
256
+ opts, args = Yawpa.parse(arguments, options, posix_order: true)
257
+ expect(args[0].frozen?).to be_falsey
258
+ expect{args[0].sub!(/./, '-')}.to_not raise_error
259
+ end
233
260
  end
234
261
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yawpa
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
5
- prerelease:
4
+ version: 1.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Josh Holtrop
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-06-25 00:00:00.000000000 Z
11
+ date: 2016-04-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: simplecov
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rake
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rdoc
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ! '>='
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: yard
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ! '>='
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ! '>='
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: redcarpet
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ! '>='
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ! '>='
108
95
  - !ruby/object:Gem::Version
@@ -129,33 +116,26 @@ files:
129
116
  - yawpa.gemspec
130
117
  homepage: ''
131
118
  licenses: []
119
+ metadata: {}
132
120
  post_install_message:
133
121
  rdoc_options: []
134
122
  require_paths:
135
123
  - lib
136
124
  required_ruby_version: !ruby/object:Gem::Requirement
137
- none: false
138
125
  requirements:
139
126
  - - ! '>='
140
127
  - !ruby/object:Gem::Version
141
128
  version: '0'
142
- segments:
143
- - 0
144
- hash: 77772525
145
129
  required_rubygems_version: !ruby/object:Gem::Requirement
146
- none: false
147
130
  requirements:
148
131
  - - ! '>='
149
132
  - !ruby/object:Gem::Version
150
133
  version: '0'
151
- segments:
152
- - 0
153
- hash: 77772525
154
134
  requirements: []
155
135
  rubyforge_project:
156
- rubygems_version: 1.8.23.2
136
+ rubygems_version: 2.4.8
157
137
  signing_key:
158
- specification_version: 3
138
+ specification_version: 4
159
139
  summary: Yet Another Way to Parse Arguments
160
140
  test_files:
161
141
  - spec/spec_helper.rb