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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: feb0e8be78d5fc392980f1ac65520b131c34641207cc31b11d05badb7edf7fcc
4
- data.tar.gz: a74b6300dec4d61257f941e57ff93cd7106190da441d1f09da621e6025f35320
3
+ metadata.gz: 5422411476cd13036bd0c77fe5d2a7dccdbfda4283c8291b02659277bebd14cd
4
+ data.tar.gz: 7cbc193dea73812eb5c280c842e79e7af3306a1fd8b4215e6d1ad391c2f3ffc2
5
5
  SHA512:
6
- metadata.gz: 9ad1572e3a661121609cfeffed61b1654bdbb94862e317944a5a1c1da9317b6315c5a6219258743275b670bb9c002ddee4188059526e1b2b55a333c34c2b1d0d
7
- data.tar.gz: 9656697885fe68d0de72bcf459796f2cf16cb85c94aff6d258ac9ad595a2ccd6f92615f0eb419f6f7068c4e47d8a080013143bf63e994e0cb8813776b85fd76f
6
+ metadata.gz: 903fdc56168e1a8f6e82e37c55f94b1bb1605e1d4e5575d6e62975932e7c454f2e48fda27dc5778d68a2666aa25670578e8ec7cfdfbe51947bccffdf43e9733a
7
+ data.tar.gz: '094e60864b261af857b88cc2bc8687d83325df3a2cc6cbf25804f5ba4984e38ef464033a305f9e35adbdeaa66ca7cf99859840af4d40926db8a5537542718df2'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ArgumentParser
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
@@ -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 = validate!(arg, rule.options)
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 = validate!(argv[i], rule.options)
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.map! { |it| validate!(it, rule.options) }
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 validate!(arg, options)
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]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: argument_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matheus Richard