ex_aequo_cli 0.1.3 → 0.1.4
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/ex_aequo/cli/args/checker.rb +44 -14
- data/lib/ex_aequo/cli/args.rb +9 -1
- data/lib/ex_aequo/cli/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fca7956e66b06df6a1ecd8490556ac3d286ac068014bac48ef70a32fa12152d
|
4
|
+
data.tar.gz: 2d8150a6c6d1fe451e3ba9e9b44bcc19c7b2e6f0d4dd275012b11d48f059cfd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f71630f881eb23a67dbcb99aa3373eee513178e8e5b3198a2b09f88f34abf618f0694e4586189bd7cae47f97a6af8e8bceb9fabd93911729a4f244960328391c
|
7
|
+
data.tar.gz: 4fb1f146ec054018eb537ef0f088b4acc694ee8a01ef2324d1b0d6d0a95655b1fcc5b9538b1e571af1c23405798fbfdfd9d7447d92574c68c258130e938cd771
|
@@ -3,32 +3,62 @@
|
|
3
3
|
module ExAequo
|
4
4
|
module Cli
|
5
5
|
class Args
|
6
|
-
class
|
7
|
-
|
6
|
+
class ArgChecker
|
8
7
|
def check!(result)
|
9
|
-
|
8
|
+
case @slice
|
9
|
+
when Range
|
10
|
+
check_range!(result)
|
11
|
+
else
|
12
|
+
check_values!(result)
|
13
|
+
end
|
14
|
+
rescue Exception => re
|
15
|
+
raise ConstraintError, "#{@name} in \n#{re.message}"
|
10
16
|
end
|
11
17
|
|
12
18
|
private
|
13
|
-
def initialize(name:, &blk)
|
19
|
+
def initialize(name:, slice:, &blk)
|
14
20
|
@blk = blk
|
15
21
|
@name = name
|
22
|
+
@slice = make_slice(slice)
|
23
|
+
end
|
24
|
+
|
25
|
+
def check_range!(result)
|
26
|
+
result.args[@slice].each { check_value!(it) }
|
27
|
+
end
|
28
|
+
|
29
|
+
def check_value!(value)
|
30
|
+
raise ConstraintError, "#{@name} in \n#{value.inspect}" unless @blk.(value)
|
31
|
+
end
|
32
|
+
|
33
|
+
def check_values!(result)
|
34
|
+
result.args.values_at(*@slice).each { check_value!(it) }
|
16
35
|
end
|
17
|
-
|
18
36
|
|
19
|
-
def
|
20
|
-
case
|
21
|
-
when
|
22
|
-
|
37
|
+
def make_slice(slice)
|
38
|
+
case slice
|
39
|
+
when Range
|
40
|
+
slice
|
41
|
+
when Integer
|
42
|
+
[slice]
|
43
|
+
when Array
|
44
|
+
slice
|
23
45
|
else
|
24
|
-
|
46
|
+
raise ArgumentError, "slice #{slice.inspect} must be a Range, Array or Integer"
|
25
47
|
end
|
26
48
|
end
|
49
|
+
end
|
27
50
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
51
|
+
class Checker
|
52
|
+
def check!(result)
|
53
|
+
raise ConstraintError, "#{@name} in \n#{result.inspect}" unless @blk.(result)
|
54
|
+
rescue Exception => re
|
55
|
+
raise ConstraintError, "#{@name} in \n#{re.message}"
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
def initialize(name:, &blk)
|
60
|
+
@blk = blk
|
61
|
+
@name = name
|
32
62
|
end
|
33
63
|
end
|
34
64
|
end
|
data/lib/ex_aequo/cli/args.rb
CHANGED
@@ -16,7 +16,6 @@ module ExAequo
|
|
16
16
|
new.parse(args, strict: false, &blk)
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
19
|
def check(name, &blk)
|
21
20
|
raise ArgumentError, 'check method needs a block' unless blk
|
22
21
|
|
@@ -24,6 +23,15 @@ module ExAequo
|
|
24
23
|
self
|
25
24
|
end
|
26
25
|
|
26
|
+
def check_args(name, slice, &blk)
|
27
|
+
raise ArgumentError, 'check_arg method needs a block' unless blk
|
28
|
+
|
29
|
+
slice = [slice] unless Enumerable === slice
|
30
|
+
checkers << ArgChecker.new(name:, slice:, &blk)
|
31
|
+
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
27
35
|
def parse(args, strict: true)
|
28
36
|
@args = args
|
29
37
|
|
data/lib/ex_aequo/cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ex_aequo_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Dober
|
@@ -15,14 +15,14 @@ dependencies:
|
|
15
15
|
requirements:
|
16
16
|
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: 0.1.
|
18
|
+
version: 0.1.12
|
19
19
|
type: :runtime
|
20
20
|
prerelease: false
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
23
|
- - "~>"
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: 0.1.
|
25
|
+
version: 0.1.12
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rspec
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|