lab42_rgxargs 0.2.0 → 0.2.3
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/monkey/open_struct.rb +9 -0
- data/lib/lab42/rgxargs/checker.rb +2 -2
- data/lib/lab42/rgxargs/predefined_matchers.rb +1 -0
- data/lib/lab42/rgxargs/version.rb +1 -1
- data/lib/lab42/rgxargs.rb +56 -8
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46ea3cf93ac7771a551e9a10b20f186f138212ebce19c00a5083f81643d6f5aa
|
4
|
+
data.tar.gz: 67228a63a2bafd4e31146ed404763f5594d04874814ceb4a305f32fbc43be2bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ed3a187a04077514644c693ac0e4ec39a3043da60b4bf1f89e330e09de277b87383173d4705e5b977a3f004fb9dc0c96dbe906a4e68944a78ea9e3d0db09b50
|
7
|
+
data.tar.gz: 7d4e6142d636dfb485c2724ef6c55a20bef1128d025778f478feb6ce7f7ac0c2a9756e23c22c695475d24c03a2c814ed30735e7cc9eafcc8341ad4d8189b8d93
|
@@ -15,7 +15,7 @@ module Lab42
|
|
15
15
|
missing = required - options.to_h.keys
|
16
16
|
@errors += missing.map(&_mk_pair(:required_kwd_missing))
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
|
20
20
|
def _mk_pair(prefix)
|
21
21
|
-> element do
|
@@ -24,7 +24,7 @@ module Lab42
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def _check_switch(_)
|
27
|
-
|
27
|
+
|
28
28
|
end
|
29
29
|
|
30
30
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Lab42::Rgxargs::PredefinedMatchers extend self
|
2
2
|
PREDEFINED = {
|
3
|
+
existing_dirs: [%r{(.+)}, ->(glob){ Dir.glob(glob).filter{ File.directory?(_1) } }],
|
3
4
|
int: [%r{\A([-+]?\d+)\z}, :to_i.to_proc],
|
4
5
|
int_list: [%r{\A(-?\d+(?:,-?\d+)*)\z}, ->(*groups){ groups.first.split(",").map(&:to_i)}],
|
5
6
|
int_range: [%r{\A(-?\d+)(?:-|\.\.)(-?\d+)\z}, ->(f, l){ Range.new(f.to_i, l.to_i) }],
|
data/lib/lab42/rgxargs.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'forwardable'
|
2
|
-
require 'ostruct'
|
3
2
|
require 'lab42/enumerable'
|
4
3
|
require 'set'
|
4
|
+
|
5
|
+
require_relative 'monkey/open_struct'
|
5
6
|
module Lab42
|
6
7
|
|
7
8
|
class Rgxargs
|
@@ -18,7 +19,7 @@ module Lab42
|
|
18
19
|
extend Forwardable
|
19
20
|
def_delegators Predefined, :list_matcher
|
20
21
|
|
21
|
-
attr_reader :allowed, :args, :conversions, :defaults, :defined_rules, :errors, :options, :required, :syntaxes
|
22
|
+
attr_reader :allowed, :args, :conversions, :defaults, :defined_rules, :errors, :options, :posix, :required, :syntaxes
|
22
23
|
|
23
24
|
def predefined_matchers
|
24
25
|
Predefined.defined_names
|
@@ -52,11 +53,11 @@ module Lab42
|
|
52
53
|
end
|
53
54
|
|
54
55
|
def parse argv
|
55
|
-
|
56
|
-
|
56
|
+
if posix
|
57
|
+
_parse_posix argv
|
58
|
+
else
|
59
|
+
_parse_ruby_syntax argv
|
57
60
|
end
|
58
|
-
_check_required_kwds
|
59
|
-
[options, args, errors]
|
60
61
|
end
|
61
62
|
|
62
63
|
def allows name, matcher=nil, &converter
|
@@ -69,13 +70,14 @@ module Lab42
|
|
69
70
|
|
70
71
|
private
|
71
72
|
|
72
|
-
def initialize &blk
|
73
|
+
def initialize(posix: false, &blk)
|
73
74
|
@args = []
|
74
75
|
@allowed = nil
|
75
76
|
@conversions = {}
|
76
77
|
@defaults = {}
|
77
78
|
@defined_rules = []
|
78
79
|
@errors = []
|
80
|
+
@posix = posix
|
79
81
|
@required = ::Set.new
|
80
82
|
@syntaxes = []
|
81
83
|
|
@@ -122,7 +124,16 @@ module Lab42
|
|
122
124
|
end
|
123
125
|
end
|
124
126
|
|
125
|
-
def
|
127
|
+
def _parse_next_posix argv
|
128
|
+
first, *rest = argv
|
129
|
+
if first == '--'
|
130
|
+
@args += rest
|
131
|
+
return []
|
132
|
+
end
|
133
|
+
_parse_posix_param first, rest
|
134
|
+
end
|
135
|
+
|
136
|
+
def _parse_next_ruby_syntax argv
|
126
137
|
first, *rest = argv
|
127
138
|
if first == '--'
|
128
139
|
@args += rest
|
@@ -131,6 +142,43 @@ module Lab42
|
|
131
142
|
_parse_symbolic first, rest
|
132
143
|
end
|
133
144
|
|
145
|
+
def _parse_posix argv
|
146
|
+
until argv.empty?
|
147
|
+
argv = _parse_next_posix argv
|
148
|
+
end
|
149
|
+
_check_required_kwds
|
150
|
+
[options, args, errors]
|
151
|
+
end
|
152
|
+
|
153
|
+
def _parse_posix_param first, rest
|
154
|
+
case first
|
155
|
+
when %r{\A--([-_[:alnum:]]+)=(.*)\z}
|
156
|
+
Regexp.last_match.to_a => _, name, value
|
157
|
+
name = name.gsub("-", "_")
|
158
|
+
options[name] = _convert(value, name: name)
|
159
|
+
when %r{\A--([-_[:alnum:]]+)\z}
|
160
|
+
Regexp.last_match.to_a => _, name
|
161
|
+
name = name.gsub("-", "_")
|
162
|
+
options[name] = true
|
163
|
+
when %r{\A-([[:alnum:]]+)\z}
|
164
|
+
$1.grapheme_clusters.each do |shopt|
|
165
|
+
options[shopt]=true
|
166
|
+
end
|
167
|
+
else
|
168
|
+
args << first
|
169
|
+
# _parse_syntax(first)
|
170
|
+
end
|
171
|
+
rest
|
172
|
+
end
|
173
|
+
|
174
|
+
def _parse_ruby_syntax argv
|
175
|
+
until argv.empty?
|
176
|
+
argv = _parse_next_ruby_syntax argv
|
177
|
+
end
|
178
|
+
_check_required_kwds
|
179
|
+
[options, args, errors]
|
180
|
+
end
|
181
|
+
|
134
182
|
def _parse_symbolic first, rest
|
135
183
|
case first
|
136
184
|
when %r{\A:(.*)}
|
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.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Dober
|
@@ -73,6 +73,7 @@ extensions: []
|
|
73
73
|
extra_rdoc_files: []
|
74
74
|
files:
|
75
75
|
- lib/lab42/enumerable.rb
|
76
|
+
- lib/lab42/monkey/open_struct.rb
|
76
77
|
- lib/lab42/rgxargs.rb
|
77
78
|
- lib/lab42/rgxargs/argument_matcher.rb
|
78
79
|
- lib/lab42/rgxargs/checker.rb
|
@@ -101,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
102
|
- !ruby/object:Gem::Version
|
102
103
|
version: '0'
|
103
104
|
requirements: []
|
104
|
-
rubygems_version: 3.3.
|
105
|
+
rubygems_version: 3.3.7
|
105
106
|
signing_key:
|
106
107
|
specification_version: 4
|
107
108
|
summary: Parse CL args according to regexen
|