lab42_rgxargs 0.2.2 → 0.3.1
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/lib/lab42/rgxargs/version.rb +3 -1
- data/lib/lab42/rgxargs.rb +20 -12
- metadata +5 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fad5aa10d2f59f1463750eaf26714fa89c84c57bc1af8834467fcc5af041ae7c
|
4
|
+
data.tar.gz: 01f8276d9423596b87a88c6f9af13904bfc8df9b3c11ce7bcc4fef2121ca7bba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4d6c8d6d3324e96bbeafff6c232dbd21e28036ef49ab92b0c3d91f41d967c8fbf844c24bff30d2427bfe03709d73482fcdf0b4b2bea3d8bf582135be9e82f87
|
7
|
+
data.tar.gz: 6a0b083147b1f5c62ef82dc6b5769ba2fc1f5e744d6b1866ea1f002332fb5a0e47f28c11fab6f6ba53e89534e91f7e76db9ce6db380f9492076e1ae965f79af5
|
data/lib/lab42/rgxargs.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'forwardable'
|
2
|
-
require 'ostruct'
|
3
2
|
require 'lab42/enumerable'
|
4
3
|
require 'set'
|
4
|
+
|
5
5
|
module Lab42
|
6
6
|
|
7
7
|
class Rgxargs
|
@@ -18,7 +18,7 @@ module Lab42
|
|
18
18
|
extend Forwardable
|
19
19
|
def_delegators Predefined, :list_matcher
|
20
20
|
|
21
|
-
attr_reader :allowed, :args, :conversions, :defaults, :defined_rules, :errors, :options, :posix, :required, :syntaxes
|
21
|
+
attr_reader :allowed, :args, :conversions, :defaults, :defined_rules, :errors, :l42_map, :options, :posix, :required, :syntaxes
|
22
22
|
|
23
23
|
def predefined_matchers
|
24
24
|
Predefined.defined_names
|
@@ -69,7 +69,7 @@ module Lab42
|
|
69
69
|
|
70
70
|
private
|
71
71
|
|
72
|
-
def initialize(posix: false, &blk)
|
72
|
+
def initialize(l42_map: true, posix: false, &blk)
|
73
73
|
@args = []
|
74
74
|
@allowed = nil
|
75
75
|
@conversions = {}
|
@@ -77,11 +77,12 @@ module Lab42
|
|
77
77
|
@defined_rules = []
|
78
78
|
@errors = []
|
79
79
|
@posix = posix
|
80
|
+
@l42_map = l42_map
|
80
81
|
@required = ::Set.new
|
81
82
|
@syntaxes = []
|
82
83
|
|
83
84
|
instance_exec(&blk) if blk
|
84
|
-
@options =
|
85
|
+
@options = defaults
|
85
86
|
end
|
86
87
|
|
87
88
|
def _convert(value, name:)
|
@@ -146,7 +147,7 @@ module Lab42
|
|
146
147
|
argv = _parse_next_posix argv
|
147
148
|
end
|
148
149
|
_check_required_kwds
|
149
|
-
|
150
|
+
_return_values
|
150
151
|
end
|
151
152
|
|
152
153
|
def _parse_posix_param first, rest
|
@@ -154,14 +155,14 @@ module Lab42
|
|
154
155
|
when %r{\A--([-_[:alnum:]]+)=(.*)\z}
|
155
156
|
Regexp.last_match.to_a => _, name, value
|
156
157
|
name = name.gsub("-", "_")
|
157
|
-
options[name] = _convert(value, name: name)
|
158
|
+
options[name.to_sym] = _convert(value, name: name)
|
158
159
|
when %r{\A--([-_[:alnum:]]+)\z}
|
159
160
|
Regexp.last_match.to_a => _, name
|
160
161
|
name = name.gsub("-", "_")
|
161
|
-
options[name] = true
|
162
|
+
options[name.to_sym] = true
|
162
163
|
when %r{\A-([[:alnum:]]+)\z}
|
163
164
|
$1.grapheme_clusters.each do |shopt|
|
164
|
-
options[shopt]=true
|
165
|
+
options[shopt.to_sym]=true
|
165
166
|
end
|
166
167
|
else
|
167
168
|
args << first
|
@@ -175,7 +176,7 @@ module Lab42
|
|
175
176
|
argv = _parse_next_ruby_syntax argv
|
176
177
|
end
|
177
178
|
_check_required_kwds
|
178
|
-
|
179
|
+
_return_values
|
179
180
|
end
|
180
181
|
|
181
182
|
def _parse_symbolic first, rest
|
@@ -183,7 +184,7 @@ module Lab42
|
|
183
184
|
when %r{\A:(.*)}
|
184
185
|
switch = $1.gsub('-','_').to_sym
|
185
186
|
_check_switch(switch)
|
186
|
-
options[switch]=true
|
187
|
+
options[switch.to_sym]=true
|
187
188
|
rest
|
188
189
|
when %r{(.*):\z}
|
189
190
|
kwd = $1.gsub('-', '_').to_sym
|
@@ -201,7 +202,7 @@ module Lab42
|
|
201
202
|
def _parse_syntax first
|
202
203
|
value, as = syntaxes.find_value(first){ |matcher| matcher.match(first) }
|
203
204
|
if as
|
204
|
-
options[as] = value
|
205
|
+
options[as.to_sym] = value
|
205
206
|
else
|
206
207
|
args << value
|
207
208
|
end
|
@@ -210,12 +211,19 @@ module Lab42
|
|
210
211
|
def _parse_value name, rest
|
211
212
|
value, *rest1 = rest
|
212
213
|
if value
|
213
|
-
options[name] = _convert(value, name: name)
|
214
|
+
options[name.to_sym] = _convert(value, name: name)
|
214
215
|
return rest1
|
215
216
|
end
|
216
217
|
errors << [:missing_required_value, name]
|
217
218
|
[]
|
218
219
|
end
|
219
220
|
|
221
|
+
def _return_values
|
222
|
+
if l42_map
|
223
|
+
[L42::Map.new(**options).with_default(nil), args, errors]
|
224
|
+
else
|
225
|
+
[options, args, errors]
|
226
|
+
end
|
227
|
+
end
|
220
228
|
end
|
221
229
|
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.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Dober
|
@@ -11,61 +11,19 @@ cert_chain: []
|
|
11
11
|
date: 2020-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: l42_map
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.1.
|
20
|
-
type: :
|
19
|
+
version: 0.1.1
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.1.
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rspec
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '3.9'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '3.9'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: pry-byebug
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.7'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '3.7'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: pry-doc
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '1.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.0'
|
26
|
+
version: 0.1.1
|
69
27
|
description: Parse CL args according to regexen
|
70
28
|
email: robert.dober@gmail.com
|
71
29
|
executables: []
|