argument_parser 0.1.0 → 0.1.1
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/argument_parser/version.rb +1 -1
- data/lib/argument_parser.rb +15 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5422411476cd13036bd0c77fe5d2a7dccdbfda4283c8291b02659277bebd14cd
|
4
|
+
data.tar.gz: 7cbc193dea73812eb5c280c842e79e7af3306a1fd8b4215e6d1ad391c2f3ffc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 903fdc56168e1a8f6e82e37c55f94b1bb1605e1d4e5575d6e62975932e7c454f2e48fda27dc5778d68a2666aa25670578e8ec7cfdfbe51947bccffdf43e9733a
|
7
|
+
data.tar.gz: '094e60864b261af857b88cc2bc8687d83325df3a2cc6cbf25804f5ba4984e38ef464033a305f9e35adbdeaa66ca7cf99859840af4d40926db8a5537542718df2'
|
data/lib/argument_parser.rb
CHANGED
@@ -19,18 +19,19 @@ module ArgumentParser
|
|
19
19
|
in :required
|
20
20
|
arg = argv[i]
|
21
21
|
raise MissingArgument, "missing required argument: #{rule.name}" if arg.nil?
|
22
|
-
arg =
|
22
|
+
arg = validate_pattern!(arg, rule.options)
|
23
23
|
|
24
24
|
result[rule.name] = arg
|
25
25
|
i += 1
|
26
26
|
in :optional
|
27
|
-
arg =
|
27
|
+
arg = validate_pattern!(argv[i], rule.options)
|
28
28
|
|
29
29
|
result[rule.name] = arg || rule.options[:default]
|
30
30
|
i += 1 if arg
|
31
31
|
in :rest
|
32
32
|
rest_args = argv.dup[i..] || []
|
33
|
-
rest_args
|
33
|
+
validate_size(rest_args, rule.options)
|
34
|
+
rest_args.map! { |it| validate_pattern!(it, rule.options) }
|
34
35
|
|
35
36
|
result[rule.name] = rest_args
|
36
37
|
i = argv.size
|
@@ -44,7 +45,7 @@ module ArgumentParser
|
|
44
45
|
|
45
46
|
private
|
46
47
|
|
47
|
-
def
|
48
|
+
def validate_pattern!(arg, options)
|
48
49
|
coerced_arg = coerce!(arg, options)
|
49
50
|
return coerced_arg unless options[:pattern]
|
50
51
|
return coerced_arg unless arg
|
@@ -53,6 +54,16 @@ module ArgumentParser
|
|
53
54
|
raise InvalidArgument, "invalid argument: #{arg}"
|
54
55
|
end
|
55
56
|
|
57
|
+
def validate_size(args, options)
|
58
|
+
if (min = options[:min])
|
59
|
+
raise InvalidArgument, "expected at least #{min} argument(s)" if args.size < min
|
60
|
+
end
|
61
|
+
|
62
|
+
if (max = options[:max])
|
63
|
+
raise InvalidArgument, "expected at most #{max} argument(s)" if args.size > max
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
56
67
|
def coerce!(arg, options)
|
57
68
|
return arg unless arg
|
58
69
|
return arg unless options[:type]
|