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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dfe60f4e05870ad8a1766abbe5b06b0a6925276696285bb19139ef11aeee70a3
4
- data.tar.gz: 682386ba4e34b99f53877e0826b0e10f824c3750198c1b6bf66d634de3104d46
3
+ metadata.gz: 47d38fb3f0f3f9881fd9ccc16ca4c883b88d4c275d7e18f857bd61da29c595a6
4
+ data.tar.gz: 489530b10f2d2aa4ce02c4f3766aae359b5a03742bd3109bcf902839103d93ac
5
5
  SHA512:
6
- metadata.gz: 87cba6d04bfe08e2df0b1f90ccb273e2dd37594f4b44b15814a0c6def76466e244ae164f6876a9ad83dceee3ee43ffa815a2e5aa1ad877d929d352febdafab32
7
- data.tar.gz: 75744824c57165417049bc8415315efc29de23a3af3c88a94b4cada576652a47e54ae472097a9819020c563bea93ec0e357fa7dfc3672a65b4e7700deaa402ed
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
- # Memoized
24
- def _list_extractor
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
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-24 00:00:00.000000000 Z
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.6.0
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.0.6
101
+ rubygems_version: 3.1.2
73
102
  signing_key:
74
103
  specification_version: 4
75
104
  summary: Parse CL args according to regexen