lab42_rgxargs 0.1.11 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca14ba075655f11152e54ca1f077ccf458ae6b7ef833c623e6ed3d0f965f85ff
4
- data.tar.gz: 39a9961deed3864e5a9c08e2222de1e0aba559a5266cbcf4975667d9057700be
3
+ metadata.gz: f6f5ad80ee90e6586a78c9ea98a1edbc211991425ad57779851c458270a24cdf
4
+ data.tar.gz: 424e5bd200042239c0f514dc148734a7ccfc6aa3b940d4f94ad2298e90b61e83
5
5
  SHA512:
6
- metadata.gz: 2db1a82994ad767dd2448cbab0a5d42020187870918eff982ddd8a66066976e36a1ecd650ae3eae4c1f18c5c403b170240364c00d8732f7db631b92e9efb785e
7
- data.tar.gz: 4d06c452ea7638e194ea9e50e704675748e08dbfb5ec96df9a3227cdc377f9151aeee542c345701fab6028458ec9d25c2a93b1cd5b30c188904640203222df89
6
+ metadata.gz: 3fa3c37dc3763b9369a530db5df60bbcecc1524e856e6a5e74bf0067a2d1838a5e4fdb53c3e5b4a09ae097c216dab484dd5490b5f717ffbfeee7db49bd4ad676
7
+ data.tar.gz: '009c8e68f9acdf6ac1ca97a06a7e06e2c17c5f64419ff417ee197b907ce0867b07eb6dfb6c330a6f80a5c924021ea532131a2a4469189a23ddbe82c7d9458519'
@@ -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) }],
@@ -1,5 +1,5 @@
1
1
  module Lab42
2
2
  class Rgxargs
3
- VERSION = "0.1.11"
3
+ VERSION = "0.2.2"
4
4
  end
5
5
  end
data/lib/lab42/rgxargs.rb CHANGED
@@ -18,7 +18,11 @@ 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, :required, :syntaxes
21
+ attr_reader :allowed, :args, :conversions, :defaults, :defined_rules, :errors, :options, :posix, :required, :syntaxes
22
+
23
+ def predefined_matchers
24
+ Predefined.defined_names
25
+ end
22
26
 
23
27
 
24
28
  def add_conversion(param, conversion=nil, required=nil, &block)
@@ -48,14 +52,13 @@ module Lab42
48
52
  end
49
53
 
50
54
  def parse argv
51
- until argv.empty?
52
- argv = _parse_next argv
55
+ if posix
56
+ _parse_posix argv
57
+ else
58
+ _parse_ruby_syntax argv
53
59
  end
54
- _check_required_kwds
55
- [options, args, errors]
56
60
  end
57
61
 
58
-
59
62
  def allows name, matcher=nil, &converter
60
63
  add_conversion(name, matcher, &converter)
61
64
  end
@@ -66,13 +69,14 @@ module Lab42
66
69
 
67
70
  private
68
71
 
69
- def initialize &blk
72
+ def initialize(posix: false, &blk)
70
73
  @args = []
71
74
  @allowed = nil
72
75
  @conversions = {}
73
76
  @defaults = {}
74
77
  @defined_rules = []
75
78
  @errors = []
79
+ @posix = posix
76
80
  @required = ::Set.new
77
81
  @syntaxes = []
78
82
 
@@ -119,7 +123,16 @@ module Lab42
119
123
  end
120
124
  end
121
125
 
122
- def _parse_next argv
126
+ def _parse_next_posix argv
127
+ first, *rest = argv
128
+ if first == '--'
129
+ @args += rest
130
+ return []
131
+ end
132
+ _parse_posix_param first, rest
133
+ end
134
+
135
+ def _parse_next_ruby_syntax argv
123
136
  first, *rest = argv
124
137
  if first == '--'
125
138
  @args += rest
@@ -128,6 +141,43 @@ module Lab42
128
141
  _parse_symbolic first, rest
129
142
  end
130
143
 
144
+ def _parse_posix argv
145
+ until argv.empty?
146
+ argv = _parse_next_posix argv
147
+ end
148
+ _check_required_kwds
149
+ [options, args, errors]
150
+ end
151
+
152
+ def _parse_posix_param first, rest
153
+ case first
154
+ when %r{\A--([-_[:alnum:]]+)=(.*)\z}
155
+ Regexp.last_match.to_a => _, name, value
156
+ name = name.gsub("-", "_")
157
+ options[name] = _convert(value, name: name)
158
+ when %r{\A--([-_[:alnum:]]+)\z}
159
+ Regexp.last_match.to_a => _, name
160
+ name = name.gsub("-", "_")
161
+ options[name] = true
162
+ when %r{\A-([[:alnum:]]+)\z}
163
+ $1.grapheme_clusters.each do |shopt|
164
+ options[shopt]=true
165
+ end
166
+ else
167
+ args << first
168
+ # _parse_syntax(first)
169
+ end
170
+ rest
171
+ end
172
+
173
+ def _parse_ruby_syntax argv
174
+ until argv.empty?
175
+ argv = _parse_next_ruby_syntax argv
176
+ end
177
+ _check_required_kwds
178
+ [options, args, errors]
179
+ end
180
+
131
181
  def _parse_symbolic first, rest
132
182
  case first
133
183
  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.1.11
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
@@ -94,14 +94,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
- version: 2.7.0
97
+ version: 3.1.0
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
- rubygems_version: 3.1.2
104
+ rubygems_version: 3.3.7
105
105
  signing_key:
106
106
  specification_version: 4
107
107
  summary: Parse CL args according to regexen