lab42_rgxargs 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46ea3cf93ac7771a551e9a10b20f186f138212ebce19c00a5083f81643d6f5aa
4
- data.tar.gz: 67228a63a2bafd4e31146ed404763f5594d04874814ceb4a305f32fbc43be2bb
3
+ metadata.gz: fa12272618cb7bd23bf218ce2405f99119f1686352b7ddfc622e5697caa22dbf
4
+ data.tar.gz: 5f6c5ebf2b1ff5bdfa3d701b493359aff5fdea521f221b78d0f5f3e3838060a9
5
5
  SHA512:
6
- metadata.gz: 6ed3a187a04077514644c693ac0e4ec39a3043da60b4bf1f89e330e09de277b87383173d4705e5b977a3f004fb9dc0c96dbe906a4e68944a78ea9e3d0db09b50
7
- data.tar.gz: 7d4e6142d636dfb485c2724ef6c55a20bef1128d025778f478feb6ce7f7ac0c2a9756e23c22c695475d24c03a2c814ed30735e7cc9eafcc8341ad4d8189b8d93
6
+ metadata.gz: bb9e676b416e06afdb02c10740026afd313f41aaf17ce60824054309327915e00dd4883901d311bb96ff15d376793fdf27a9cc6be7a1c2ee6d8074a75ff302bc
7
+ data.tar.gz: 1a40c994e1b1943c070f6b2969c1b4b59ab832e17e79908cd7218210bbf12e916c1521ea5758aa0e7330515606dd4745a18941771f8bd9e3d57d775b941791a2
@@ -1,5 +1,5 @@
1
1
  module Lab42
2
2
  class Rgxargs
3
- VERSION = "0.2.3"
3
+ VERSION = "0.2.4"
4
4
  end
5
5
  end
data/lib/lab42/rgxargs.rb CHANGED
@@ -19,7 +19,7 @@ module Lab42
19
19
  extend Forwardable
20
20
  def_delegators Predefined, :list_matcher
21
21
 
22
- attr_reader :allowed, :args, :conversions, :defaults, :defined_rules, :errors, :options, :posix, :required, :syntaxes
22
+ attr_reader :allowed, :args, :conversions, :defaults, :defined_rules, :errors, :open_struct, :options, :posix, :required, :syntaxes
23
23
 
24
24
  def predefined_matchers
25
25
  Predefined.defined_names
@@ -70,7 +70,7 @@ module Lab42
70
70
 
71
71
  private
72
72
 
73
- def initialize(posix: false, &blk)
73
+ def initialize(open_struct: true, posix: false, &blk)
74
74
  @args = []
75
75
  @allowed = nil
76
76
  @conversions = {}
@@ -78,11 +78,12 @@ module Lab42
78
78
  @defined_rules = []
79
79
  @errors = []
80
80
  @posix = posix
81
+ @open_struct = open_struct
81
82
  @required = ::Set.new
82
83
  @syntaxes = []
83
84
 
84
85
  instance_exec(&blk) if blk
85
- @options = ::OpenStruct.new(defaults)
86
+ @options = defaults
86
87
  end
87
88
 
88
89
  def _convert(value, name:)
@@ -147,7 +148,7 @@ module Lab42
147
148
  argv = _parse_next_posix argv
148
149
  end
149
150
  _check_required_kwds
150
- [options, args, errors]
151
+ _return_values
151
152
  end
152
153
 
153
154
  def _parse_posix_param first, rest
@@ -155,14 +156,14 @@ module Lab42
155
156
  when %r{\A--([-_[:alnum:]]+)=(.*)\z}
156
157
  Regexp.last_match.to_a => _, name, value
157
158
  name = name.gsub("-", "_")
158
- options[name] = _convert(value, name: name)
159
+ options[name.to_sym] = _convert(value, name: name)
159
160
  when %r{\A--([-_[:alnum:]]+)\z}
160
161
  Regexp.last_match.to_a => _, name
161
162
  name = name.gsub("-", "_")
162
- options[name] = true
163
+ options[name.to_sym] = true
163
164
  when %r{\A-([[:alnum:]]+)\z}
164
165
  $1.grapheme_clusters.each do |shopt|
165
- options[shopt]=true
166
+ options[shopt.to_sym]=true
166
167
  end
167
168
  else
168
169
  args << first
@@ -176,7 +177,7 @@ module Lab42
176
177
  argv = _parse_next_ruby_syntax argv
177
178
  end
178
179
  _check_required_kwds
179
- [options, args, errors]
180
+ _return_values
180
181
  end
181
182
 
182
183
  def _parse_symbolic first, rest
@@ -184,7 +185,7 @@ module Lab42
184
185
  when %r{\A:(.*)}
185
186
  switch = $1.gsub('-','_').to_sym
186
187
  _check_switch(switch)
187
- options[switch]=true
188
+ options[switch.to_sym]=true
188
189
  rest
189
190
  when %r{(.*):\z}
190
191
  kwd = $1.gsub('-', '_').to_sym
@@ -202,7 +203,7 @@ module Lab42
202
203
  def _parse_syntax first
203
204
  value, as = syntaxes.find_value(first){ |matcher| matcher.match(first) }
204
205
  if as
205
- options[as] = value
206
+ options[as.to_sym] = value
206
207
  else
207
208
  args << value
208
209
  end
@@ -211,12 +212,19 @@ module Lab42
211
212
  def _parse_value name, rest
212
213
  value, *rest1 = rest
213
214
  if value
214
- options[name] = _convert(value, name: name)
215
+ options[name.to_sym] = _convert(value, name: name)
215
216
  return rest1
216
217
  end
217
218
  errors << [:missing_required_value, name]
218
219
  []
219
220
  end
220
221
 
222
+ def _return_values
223
+ if open_struct
224
+ [::OpenStruct.new(options), args, errors]
225
+ else
226
+ [options, args, errors]
227
+ end
228
+ end
221
229
  end
222
230
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lab42_rgxargs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober