arg-parser 0.3.0 → 0.3.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 +7 -0
- data/lib/arg-parser/definition.rb +14 -1
- data/lib/arg-parser/dsl.rb +1 -0
- data/lib/arg-parser/parser.rb +8 -3
- metadata +11 -12
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9b0c2c32a741e3751760248db85d2cc4e1a47288
|
4
|
+
data.tar.gz: cbd2b833b43077480b73e932bdf45168c52d8d04
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 571fb0dda1c9f9b9162fe126da1795c22db68e3ae2732b6b66db0fbe87466cd617f8fb7a413f44b30ad21e47aa2d22b563030e4133151509766a49ad4506bd33
|
7
|
+
data.tar.gz: 1dd67d98bedea2a677490e999fc9db92ee5c29ab1099740f4a0f828a33938ae4640220436140b247f72fdcc09c9361833df921a20b23f36fe389a515ff05877d
|
@@ -55,7 +55,8 @@ module ArgParser
|
|
55
55
|
raise ArgumentError, "An argument with key '#{arg.key}' has already been defined"
|
56
56
|
end
|
57
57
|
if arg.short_key && @short_keys[arg.short_key]
|
58
|
-
raise ArgumentError, "
|
58
|
+
raise ArgumentError, "The short key '#{arg.short_key}' has already been registered by the '#{
|
59
|
+
@short_keys[arg.short_key]}' argument"
|
59
60
|
end
|
60
61
|
if arg.is_a?(RestArgument) && rest_args
|
61
62
|
raise ArgumentError, "Only one rest argument can be defined"
|
@@ -224,6 +225,18 @@ module ArgParser
|
|
224
225
|
end
|
225
226
|
|
226
227
|
|
228
|
+
# @return [Array] all argument keys that have been defined.
|
229
|
+
def keys
|
230
|
+
@arguments.keys
|
231
|
+
end
|
232
|
+
|
233
|
+
|
234
|
+
# @return [Array] all argument short keys that have been defined.
|
235
|
+
def short_keys
|
236
|
+
@short_keys.keys
|
237
|
+
end
|
238
|
+
|
239
|
+
|
227
240
|
# @return [Array] all arguments that have been defined.
|
228
241
|
def args
|
229
242
|
@arguments.values
|
data/lib/arg-parser/dsl.rb
CHANGED
data/lib/arg-parser/parser.rb
CHANGED
@@ -3,6 +3,11 @@ module ArgParser
|
|
3
3
|
# Parser for parsing a command-line
|
4
4
|
class Parser
|
5
5
|
|
6
|
+
# Create an empty structure for cases where we parse an empty arguments
|
7
|
+
# definition (and therefore need to return an empty Struct)
|
8
|
+
EmptyArgs = Struct.new(nil)
|
9
|
+
|
10
|
+
|
6
11
|
# @return [Definition] The supported Arguments to be used when parsing
|
7
12
|
# the command-line.
|
8
13
|
attr_reader :definition
|
@@ -85,7 +90,7 @@ module ArgParser
|
|
85
90
|
case token
|
86
91
|
when '/?', '-?', '--help'
|
87
92
|
@show_help = true
|
88
|
-
when
|
93
|
+
when /^[-\/]([a-z0-9]+)$/i
|
89
94
|
$1.to_s.each_char do |sk|
|
90
95
|
kw_vals[arg] = nil if arg
|
91
96
|
arg = @definition[sk]
|
@@ -94,7 +99,7 @@ module ArgParser
|
|
94
99
|
arg = nil
|
95
100
|
end
|
96
101
|
end
|
97
|
-
when
|
102
|
+
when /^--(no-)?(.+)/i
|
98
103
|
kw_vals[arg] = nil if arg
|
99
104
|
arg = @definition[$2]
|
100
105
|
if FlagArgument === arg || (KeywordArgument === arg && $1)
|
@@ -166,7 +171,7 @@ module ArgParser
|
|
166
171
|
if self.errors.size > 0
|
167
172
|
@show_usage = true
|
168
173
|
elsif result.empty?
|
169
|
-
|
174
|
+
EmptyArgs.new
|
170
175
|
else
|
171
176
|
props = result.keys
|
172
177
|
@definition.args.each{ |arg| props << arg.key unless result.has_key?(arg.key) }
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arg-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Adam Gardiner
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2017-09-13 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
|
-
description:
|
15
|
-
|
16
|
-
|
13
|
+
description: |2
|
14
|
+
ArgParser is a simple, yet powerful command-line argument parser, with
|
15
|
+
support for positional, keyword, flag and rest arguments, any of which
|
16
|
+
may be optional or mandatory.
|
17
17
|
email: adam.b.gardiner@gmail.com
|
18
18
|
executables: []
|
19
19
|
extensions: []
|
@@ -29,26 +29,25 @@ files:
|
|
29
29
|
- lib/arg_parser.rb
|
30
30
|
homepage: https://github.com/agardiner/arg-parser
|
31
31
|
licenses: []
|
32
|
+
metadata: {}
|
32
33
|
post_install_message:
|
33
34
|
rdoc_options: []
|
34
35
|
require_paths:
|
35
36
|
- lib
|
36
37
|
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
-
none: false
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - '>='
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
43
|
requirements:
|
45
|
-
- -
|
44
|
+
- - '>='
|
46
45
|
- !ruby/object:Gem::Version
|
47
46
|
version: '0'
|
48
47
|
requirements: []
|
49
48
|
rubyforge_project:
|
50
|
-
rubygems_version:
|
49
|
+
rubygems_version: 2.0.14.1
|
51
50
|
signing_key:
|
52
|
-
specification_version:
|
51
|
+
specification_version: 4
|
53
52
|
summary: ArgParser is a simple, yet powerful, command-line argument (option) parser
|
54
53
|
test_files: []
|