lab42_rgxargs 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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