lab42_rgxargs 0.1.4 → 0.1.5
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/predefined_matchers.rb +4 -4
- data/lib/lab42/rgxargs/syntax.rb +19 -0
- data/lib/lab42/rgxargs/syntax_definer.rb +11 -0
- data/lib/lab42/rgxargs.rb +2 -2
- metadata +33 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47d38fb3f0f3f9881fd9ccc16ca4c883b88d4c275d7e18f857bd61da29c595a6
|
4
|
+
data.tar.gz: 489530b10f2d2aa4ce02c4f3766aae359b5a03742bd3109bcf902839103d93ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a08a0dd92f963b90860f833ff070b41a1da5dc0c1725a3e67d8748277db9be7173ac2527f1f25eabeebbb7e3a67cc847b240466f2ce06da1d992d57f325fae38
|
7
|
+
data.tar.gz: bcf5fdb925293e0a0ad10bfb372b6a3ae23990cb7ff72ea08baa621c45a09a181216592b36423d62663da6a85df562ab4b4f0643a95d7d8316eebc46cea72b9b
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Lab42::Rgxargs::PredefinedMatchers extend self
|
2
2
|
PREDEFINED = {
|
3
|
+
int: [%r{\A([-+]?\d+)\z}, :to_i.to_proc],
|
3
4
|
int_list: [%r{\A(-?\d+(?:,-?\d+)*)\z}, ->(*groups){ groups.first.split(",").map(&:to_i)}],
|
4
5
|
int_range: [%r{\A(-?\d+)(?:-|\.\.)(-?\d+)\z}, ->(f, l){ Range.new(f.to_i, l.to_i) }],
|
5
6
|
list: [%r{(\w+)(?:,(\w+))*}, ->(*groups){ groups.compact }],
|
@@ -16,12 +17,11 @@ module Lab42::Rgxargs::PredefinedMatchers extend self
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def list_matcher values
|
19
|
-
[%r{\A((?:#{values.join("|")})(?:,(?:#{values.join("|")}))*)\z}, _list_extractor]
|
20
|
+
[%r{\A((?:#{values.join("|")})(?:,(?:#{values.join("|")}))*)\z}, method(:_list_extractor)]
|
20
21
|
end
|
21
22
|
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
@__list_extractor__ ||= ->(*groups){ groups.first.split(",") }
|
24
|
+
def _list_extractor(*groups)
|
25
|
+
groups.first.split(",")
|
26
26
|
end
|
27
27
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Lab42::Rgxargs::Syntax
|
2
|
+
|
3
|
+
attr_reader :converter, :matcher
|
4
|
+
|
5
|
+
def matches? value
|
6
|
+
if match = matcher.match(value)
|
7
|
+
yield converter.(*match.captures)
|
8
|
+
true
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def initialize matcher, converter
|
15
|
+
@converter = converter
|
16
|
+
@matcher = matcher
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -1,5 +1,16 @@
|
|
1
|
+
# Instanciated with an Rgxargs parser it can run a block
|
2
|
+
# in its own context so that the block accesses the
|
3
|
+
# parser's functionality with syntactic sugar w/o cluttering
|
4
|
+
# ther parser itself with too many methods
|
5
|
+
# E.g.:
|
6
|
+
#
|
7
|
+
# ```ruby
|
8
|
+
# syntax
|
9
|
+
#
|
10
|
+
# ```
|
1
11
|
class Lab42::Rgxargs::SyntaxDefiner
|
2
12
|
|
13
|
+
|
3
14
|
attr_reader :arg_name, :parser
|
4
15
|
|
5
16
|
def run code
|
data/lib/lab42/rgxargs.rb
CHANGED
@@ -15,12 +15,12 @@ module Lab42
|
|
15
15
|
attr_reader :args, :conversions, :defined_rules, :errors, :options, :syntaxes
|
16
16
|
|
17
17
|
|
18
|
-
def add_conversion(param, conversion)
|
18
|
+
def add_conversion(param, conversion, &block)
|
19
19
|
case conversion
|
20
20
|
when Symbol
|
21
21
|
conversions[param] = Predefined.fetch(conversion, conversion)
|
22
22
|
else
|
23
|
-
conversions[param] = conversion
|
23
|
+
conversions[param] = block ? [conversion, block] : conversion
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lab42_rgxargs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Dober
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-01-
|
11
|
+
date: 2020-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lab42_speculate
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.0.4
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.4
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rspec
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +52,20 @@ dependencies:
|
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
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'
|
41
69
|
description: Parse CL args according to regexen
|
42
70
|
email: robert.dober@gmail.com
|
43
71
|
executables: []
|
@@ -49,6 +77,7 @@ files:
|
|
49
77
|
- lib/lab42/rgxargs/argument_matcher.rb
|
50
78
|
- lib/lab42/rgxargs/error.rb
|
51
79
|
- lib/lab42/rgxargs/predefined_matchers.rb
|
80
|
+
- lib/lab42/rgxargs/syntax.rb
|
52
81
|
- lib/lab42/rgxargs/syntax_definer.rb
|
53
82
|
homepage: https://github.com/robertdober/lab42_rgxargs
|
54
83
|
licenses:
|
@@ -62,14 +91,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
62
91
|
requirements:
|
63
92
|
- - ">="
|
64
93
|
- !ruby/object:Gem::Version
|
65
|
-
version: 2.
|
94
|
+
version: 2.7.0
|
66
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
96
|
requirements:
|
68
97
|
- - ">="
|
69
98
|
- !ruby/object:Gem::Version
|
70
99
|
version: '0'
|
71
100
|
requirements: []
|
72
|
-
rubygems_version: 3.
|
101
|
+
rubygems_version: 3.1.2
|
73
102
|
signing_key:
|
74
103
|
specification_version: 4
|
75
104
|
summary: Parse CL args according to regexen
|