optparse-simple 0.4.5 → 0.4.6
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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data/lib/optparse-simple.rb +38 -19
- data.tar.gz.sig +1 -4
- metadata +32 -49
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b326dad3694f081a6c88e0379f0eac45755031bb0a18699758d13a1191a5bd6e
|
4
|
+
data.tar.gz: 3f821a49c2c71552987cbae0773385da50a82ba88b9afb3733d776904b400c7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb51494f80e5cef1fcbcb5add02a68652ad67742521d3950e7178ff1026f46a5dad7fbe8ad9c9f505b5a653386428f6f2a70fbfc7aac12c32ad045f9611bd02f
|
7
|
+
data.tar.gz: ccbf8eb0bd9e3004f24ad98ee98236157f1a9f9f73dd4928fbb2db8945d4c6800832e00e41da42afc1f16b4efcb372380f8d10d5c45293450805806c7a74b33d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/optparse-simple.rb
CHANGED
@@ -10,14 +10,16 @@ require 'table-formatter'
|
|
10
10
|
class OptParseSimple
|
11
11
|
include REXML
|
12
12
|
|
13
|
-
def initialize(s)
|
13
|
+
def initialize(s, debug: false)
|
14
|
+
|
15
|
+
@debug = debug
|
14
16
|
super()
|
15
17
|
buffer = readx(s)
|
16
18
|
|
17
19
|
@doc = Document.new(buffer)
|
18
20
|
#@doc = Rexle.new(buffer)
|
19
21
|
end
|
20
|
-
|
22
|
+
|
21
23
|
def parse(args)
|
22
24
|
|
23
25
|
@options = XPath.match(@doc.root, 'records/optionx[summary/switch!="n/a"]')
|
@@ -25,17 +27,21 @@ class OptParseSimple
|
|
25
27
|
|
26
28
|
switches = @options.map do |option|
|
27
29
|
|
30
|
+
puts 'option: ' + option.to_s.inspect if @debug
|
31
|
+
|
28
32
|
switch = option.text('summary/switch')
|
33
|
+
next if switch.nil?
|
34
|
+
|
29
35
|
switch[0] == '-' ? switch : nil
|
30
|
-
end
|
36
|
+
end
|
31
37
|
|
32
38
|
switches.compact!
|
33
|
-
|
39
|
+
|
34
40
|
# split the argument switches if grouped e.g. -ltr
|
35
41
|
args.map! do |arg|
|
36
42
|
|
37
43
|
if arg[/^\-[a-zA-Z]+$/] and switches.grep(/#{arg}/).empty? then
|
38
|
-
arg[1..-1].scan(/./).map {|x| '-' + x}
|
44
|
+
arg[1..-1].scan(/./).map {|x| '-' + x}
|
39
45
|
else
|
40
46
|
arg
|
41
47
|
end
|
@@ -50,7 +56,7 @@ class OptParseSimple
|
|
50
56
|
.map {|node| %w(switch alias)\
|
51
57
|
.map{|x| node.text(x)}.compact}\
|
52
58
|
.flatten
|
53
|
-
|
59
|
+
|
54
60
|
args.map!.with_index do |x,i|
|
55
61
|
next unless x or i < args.length - 1
|
56
62
|
(x += '=' + args[i+1]; args[i+1] = nil) if options.include?(x)
|
@@ -79,7 +85,7 @@ class OptParseSimple
|
|
79
85
|
end
|
80
86
|
|
81
87
|
a2 = args.zip(options_remaining).map(&:reverse)
|
82
|
-
|
88
|
+
|
83
89
|
if a2.map(&:first).all? then
|
84
90
|
@h = Hash[*(a1+a2).map{|x,y| [x.to_s.strip.to_sym, y || true]}.flatten]
|
85
91
|
else
|
@@ -93,8 +99,8 @@ class OptParseSimple
|
|
93
99
|
def to_h()
|
94
100
|
@h
|
95
101
|
end
|
96
|
-
|
97
|
-
def help
|
102
|
+
|
103
|
+
def help
|
98
104
|
a = XPath.match(@doc.root, "records/optionx/summary[switch != 'n/a']").map do |summary|
|
99
105
|
#a = @doc.root.xpath("records/optionx/summary[switch != 'n/a']").map do |summary|
|
100
106
|
%w(switch alias).map {|x| summary.text x}
|
@@ -103,7 +109,7 @@ class OptParseSimple
|
|
103
109
|
puts TableFormatter.new(source: a, border: false).to_s
|
104
110
|
end
|
105
111
|
|
106
|
-
private
|
112
|
+
private
|
107
113
|
|
108
114
|
def options_match(option, args)
|
109
115
|
|
@@ -116,7 +122,7 @@ class OptParseSimple
|
|
116
122
|
|
117
123
|
if switch_matched then
|
118
124
|
|
119
|
-
value_pattern = option.text('summary/value')
|
125
|
+
value_pattern = option.text('summary/value')
|
120
126
|
|
121
127
|
if value_pattern and value_pattern.downcase != 'n/a' then
|
122
128
|
|
@@ -126,7 +132,7 @@ class OptParseSimple
|
|
126
132
|
# check the next arg
|
127
133
|
if value.nil? and args.length > 0 then
|
128
134
|
|
129
|
-
next_arg = args[arg_index + 1]
|
135
|
+
next_arg = args[arg_index + 1]
|
130
136
|
|
131
137
|
# check to make sure it's not the next switch
|
132
138
|
next_option = @options[1] if @options.length > 1
|
@@ -145,7 +151,7 @@ class OptParseSimple
|
|
145
151
|
|
146
152
|
else
|
147
153
|
args.delete_at(arg_index)
|
148
|
-
end
|
154
|
+
end
|
149
155
|
|
150
156
|
else
|
151
157
|
|
@@ -153,7 +159,7 @@ class OptParseSimple
|
|
153
159
|
end
|
154
160
|
|
155
161
|
key = option.text('summary/name')
|
156
|
-
|
162
|
+
|
157
163
|
elsif option.text('summary/mandatory').to_s.downcase == 'true' then
|
158
164
|
|
159
165
|
raise option.text('records/errorx/summary/msg')
|
@@ -167,22 +173,35 @@ class OptParseSimple
|
|
167
173
|
|
168
174
|
[pair, next_pair]
|
169
175
|
end
|
170
|
-
|
176
|
+
|
171
177
|
def readx(s)
|
172
|
-
|
178
|
+
|
173
179
|
r = if s.is_a? Polyrex then
|
180
|
+
|
174
181
|
s.to_xml
|
182
|
+
|
175
183
|
elsif s[/\s/] then
|
176
|
-
|
184
|
+
|
185
|
+
puts 'before polyrex' if @debug
|
186
|
+
px = Polyrex.new('options/optionx[name,switch,alias,value,mandatory]/' +
|
187
|
+
'errorx[msg]', delimiter: ' ')
|
188
|
+
px.parse(s).to_xml
|
189
|
+
|
177
190
|
elsif s[/^https?:\/\//] then # url
|
191
|
+
|
178
192
|
Kernel.open(s, 'UserAgent' => 'Polyrex-Reader').read
|
193
|
+
|
179
194
|
elsif s[/\</] # xml
|
195
|
+
|
180
196
|
s
|
197
|
+
|
181
198
|
else # local file
|
199
|
+
|
182
200
|
File.read s
|
183
|
-
|
201
|
+
|
202
|
+
end
|
184
203
|
|
185
204
|
r
|
186
205
|
end
|
187
206
|
|
188
|
-
end
|
207
|
+
end
|
data.tar.gz.sig
CHANGED
@@ -1,4 +1 @@
|
|
1
|
-
�O�
|
2
|
-
u�|C
|
3
|
-
��(Gkp�=�>�K��b���U2n�PxL��qr�.�6��u�]M�Q�]� n��i�ׯ��0��*�w
|
4
|
-
g���=��.���(�|c�`�c�����?�v�y�zom]T�dBWEp[ې���]k��U���᰷��4�+���i�Х[��8�D�!ͨ�ؤ����E>�/�;.ݪ�D� M���O��*���
|
1
|
+
;�[�{�\Z��z�mw�R� Ō\:6#B� 7�xB��<���U�/��mj�dY��.���7���}p�p�Tf��mP����"�FA�ulj�[����4�B��l���(A�tD�����"-�Ij�*p�r1��>��x��(&�D�ß�ñ�;���Z;)Ў�,������"v��.���mx���F|���еB�״\QO�5e`9xI��-E�����k[�O}�����#��d�1�V���)-؞{a|s 8 8�t2oS�G��۵pC�ۤ��U�E��M�wui}_�_"6�{�Nyc�x}���{��A�1�����$���S��4M�vf-Yg\>)Ӟ�[Ѯ=8ߛ�;�e;}��IL �6��MC;�m5���}�
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: optparse-simple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,28 +10,32 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMzE4MTcxMTA5WhcN
|
15
|
+
MjMwMzE4MTcxMTA5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCmJrad
|
17
|
+
d/9H8k46iOy7aoFodRISFS60AtPjhclN4evl9Yoms7DNu9jJoMVz5gEk8kYTE2Ky
|
18
|
+
K2ZC8ii+m2BpdglF+sxxpZYs6AlJmg5u+2SsM37mumNHIPU1rAX/xxQ5G0M5hbQV
|
19
|
+
kMf9NW70R6fCyCRDZmpl126gEdnXhbI3CeA4NV/yG809OqbMGYZBoc4wtYV6qPRm
|
20
|
+
53pbju0IuqrDcZSEdP7wgmENgpdpPHoHUERmWqtIHQLxcCQhtZKiuF1j/oX/RE98
|
21
|
+
ByrMy46RH0CV0qYSdsuFD9r9d3UszBUx83JUnpIEdswGKH81jWqj8IvnZUcTQv9G
|
22
|
+
70UiMNgW1Pr0L+Cp8MSd6nCDJZag7dLNPjmNLe21/rOA7XqTBhbLFXqDhPmeNL6m
|
23
|
+
4CXuh675pXV8/XoJ6CHLzbkZ5pkYhq40DNgpZYy7ziJd1K2dYWlOacIK+2cuXmlz
|
24
|
+
R65EAZYwlOiXMwyPH5dfEXgKtT9Ur0UCnT6ebkDsUaVCNcVHMFERVAlE4dkCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU2XNoEI9m
|
26
|
+
73Pk9PD2zXE9sb/N/1QwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAQU2YxoKeotpocBo9hvY+DmYnFG3YBwy403xszRbk
|
29
|
+
qdDDOjWvK3rc4uo4t+1VrdSanLhsjTcy3p7ssEhWPUoJUsAnELgba8SQuoEvH5gb
|
30
|
+
Di5P3BllU0R49y1osDY45TzK2bce7w6ivx3oo9vvEImShJiB+lJZUqNEnn+Ukd8k
|
31
|
+
rM+zO5f/aNWG/pS6CKaWSpxWIdaxzPheyoARBodCT/4GklKqXU4y77/oLCHsLqBH
|
32
|
+
QDkEbD2xxq+nWiwIvjPa5pQNsMEOaC97ot7dN1fnJLpuDBKan805lL/yqDIWmmrC
|
33
|
+
H3GEyF6rM5SsbYIDb4IOrd9ss9s7ecMdB4xAd18aSEEW0m6GGp2MK94xHE+cIAvv
|
34
|
+
ajDe8lJwXY2qY5Hs7mfycsN5hiT+1l+7ZFCmeWg74IMR9d53IqVtulMRApL38r5N
|
35
|
+
SNrVD7FLc6WvFerPjJNoOEcMgRFQzocCES1YWcCBVTRqrYBuWYRSMrQmCLe/RNPE
|
36
|
+
O5mUqpUAgNSTf05RAdLMVsNz
|
33
37
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
38
|
+
date: 2022-03-18 00:00:00.000000000 Z
|
35
39
|
dependencies:
|
36
40
|
- !ruby/object:Gem::Dependency
|
37
41
|
name: polyrex
|
@@ -39,42 +43,22 @@ dependencies:
|
|
39
43
|
requirements:
|
40
44
|
- - "~>"
|
41
45
|
- !ruby/object:Gem::Version
|
42
|
-
version: '1.
|
46
|
+
version: '1.4'
|
43
47
|
- - ">="
|
44
48
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.
|
49
|
+
version: 1.4.1
|
46
50
|
type: :runtime
|
47
51
|
prerelease: false
|
48
52
|
version_requirements: !ruby/object:Gem::Requirement
|
49
53
|
requirements:
|
50
54
|
- - "~>"
|
51
55
|
- !ruby/object:Gem::Version
|
52
|
-
version: '1.
|
56
|
+
version: '1.4'
|
53
57
|
- - ">="
|
54
58
|
- !ruby/object:Gem::Version
|
55
|
-
version: 1.
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: table-formatter
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - "~>"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0.1'
|
63
|
-
- - ">="
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: 0.1.13
|
66
|
-
type: :runtime
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: !ruby/object:Gem::Requirement
|
69
|
-
requirements:
|
70
|
-
- - "~>"
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: '0.1'
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.1.13
|
59
|
+
version: 1.4.1
|
76
60
|
description: OptParse-Simple parses command-line arguments and returns them as a hash.
|
77
|
-
email:
|
61
|
+
email: digital.robertson@gmail.com
|
78
62
|
executables: []
|
79
63
|
extensions: []
|
80
64
|
extra_rdoc_files: []
|
@@ -99,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
83
|
- !ruby/object:Gem::Version
|
100
84
|
version: '0'
|
101
85
|
requirements: []
|
102
|
-
|
103
|
-
rubygems_version: 2.4.8
|
86
|
+
rubygems_version: 3.2.22
|
104
87
|
signing_key:
|
105
88
|
specification_version: 4
|
106
89
|
summary: optparse-simple
|
metadata.gz.sig
CHANGED
Binary file
|