yawpa 1.1.0 → 1.2.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 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