optparse 0.4.0 → 0.5.0
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/.document +7 -0
- data/.rdoc_options +4 -0
- data/ChangeLog +219 -107
- data/doc/optparse/.document +1 -0
- data/doc/optparse/option_params.rdoc +1 -1
- data/doc/optparse/ruby/argument_abbreviation.rb +9 -0
- data/doc/optparse/tutorial.rdoc +23 -0
- data/lib/optparse/ac.rb +16 -0
- data/lib/optparse/kwargs.rb +8 -3
- data/lib/optparse/version.rb +9 -0
- data/lib/optparse.rb +147 -53
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5a9ef5004e5838005ad874fc163ebd1e6266d3319d08be502a8fb2d6b6b48a2
|
4
|
+
data.tar.gz: 94fb689cea59f667e4bc4788a6713a50cd829b4e552097994e7b9833f5f35432
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d0d3a7e51d10a3636e337dfdbe6562ae32e5e4ee18ef61926460f964900f5341f75ae3dd308901e2c1bdf8d5e1c1bd4434d8fe1e2fc77b366bf68690fa9ec85
|
7
|
+
data.tar.gz: e494246dfe20878a07d79d3489918b9383a2ade4076023a4fd1ec5f973c2f8111066b85fa8e49b69303ff8ff7301adc4ad5c7d3cccde5650ef93afa9b7819030
|
data/.document
ADDED
data/.rdoc_options
ADDED
data/ChangeLog
CHANGED
@@ -1,163 +1,275 @@
|
|
1
1
|
-*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
commit
|
4
|
-
Author:
|
5
|
-
AuthorDate:
|
6
|
-
Commit:
|
7
|
-
CommitDate:
|
3
|
+
commit 979bd76281d28044b3def3eadba233a87e62415a
|
4
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
5
|
+
AuthorDate: 2024-04-15 18:42:47 +0900
|
6
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
7
|
+
CommitDate: 2024-04-15 18:42:47 +0900
|
8
8
|
|
9
|
-
|
9
|
+
[DOC] Split fetching commits and building package
|
10
10
|
|
11
|
-
commit
|
12
|
-
Author:
|
13
|
-
AuthorDate:
|
14
|
-
Commit:
|
15
|
-
CommitDate:
|
11
|
+
commit ca883bd3a1ac13957774fcb93e8bccd80b74c9d1
|
12
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
13
|
+
AuthorDate: 2024-04-15 18:21:31 +0900
|
14
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
15
|
+
CommitDate: 2024-04-15 18:21:31 +0900
|
16
16
|
|
17
|
-
|
17
|
+
[DOC] git on Github Actions is old
|
18
18
|
|
19
|
-
|
20
|
-
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
21
|
-
AuthorDate: 2023-09-11 03:20:53 +0000
|
22
|
-
Commit: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
23
|
-
CommitDate: 2023-09-11 14:02:17 +0900
|
19
|
+
It does not support `--unshallow-exclude` option.
|
24
20
|
|
25
|
-
|
21
|
+
commit 7f79bc820ff0e04a05204ec63c5fc3e9c85e14ad
|
22
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
23
|
+
AuthorDate: 2024-04-15 18:08:57 +0900
|
24
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
25
|
+
CommitDate: 2024-04-15 18:08:57 +0900
|
26
26
|
|
27
|
-
|
28
|
-
- [Release notes](https://github.com/actions/checkout/releases)
|
29
|
-
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
|
30
|
-
- [Commits](https://github.com/actions/checkout/compare/v3...v4)
|
27
|
+
[DOC] Fix error when no tag found
|
31
28
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
...
|
29
|
+
commit add085df63d79d878a8901c42f2cfc3eec56307f
|
30
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
31
|
+
AuthorDate: 2024-04-15 15:57:09 +0900
|
32
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
33
|
+
CommitDate: 2024-04-15 15:58:54 +0900
|
38
34
|
|
39
|
-
|
35
|
+
Fetch upto the previous tag for changelogs
|
40
36
|
|
41
|
-
commit
|
42
|
-
Author:
|
43
|
-
AuthorDate:
|
44
|
-
Commit:
|
45
|
-
CommitDate:
|
37
|
+
commit 436a5c516b67f8aec900f2361567c6fc163ade05
|
38
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
39
|
+
AuthorDate: 2024-04-15 15:08:19 +0900
|
40
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
41
|
+
CommitDate: 2024-04-15 15:08:19 +0900
|
46
42
|
|
47
|
-
[DOC]
|
43
|
+
[DOC] Make timestamps in a ISO 8601-like format
|
48
44
|
|
49
|
-
commit
|
45
|
+
commit 3a2dcd72d1fdabf63218cd13c8c7953cb3c28f6b
|
50
46
|
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
51
|
-
AuthorDate:
|
47
|
+
AuthorDate: 2024-04-15 14:55:14 +0900
|
52
48
|
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
53
|
-
CommitDate:
|
49
|
+
CommitDate: 2024-04-15 14:55:14 +0900
|
50
|
+
|
51
|
+
[DOC] Make ChangeLog non-empty
|
54
52
|
|
55
|
-
|
53
|
+
When the latest version is tagged at the head, there is no commit
|
54
|
+
between the tag and the head. Make from the previous tag.
|
56
55
|
|
57
|
-
commit
|
56
|
+
commit b7382c02f1092f2c0ef0f4096d3b8428e2adf3fa
|
58
57
|
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
59
|
-
AuthorDate:
|
58
|
+
AuthorDate: 2024-04-15 14:49:59 +0900
|
60
59
|
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
61
|
-
CommitDate:
|
60
|
+
CommitDate: 2024-04-15 14:49:59 +0900
|
62
61
|
|
63
|
-
|
62
|
+
[DOC] Exclude CI-skipped commits from changelogs
|
64
63
|
|
65
|
-
commit
|
66
|
-
Author:
|
67
|
-
AuthorDate:
|
68
|
-
Commit:
|
69
|
-
CommitDate:
|
64
|
+
commit b49cb996afdd68e4eb373ba602c95b52c963d160
|
65
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
66
|
+
AuthorDate: 2024-04-15 14:24:19 +0900
|
67
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
68
|
+
CommitDate: 2024-04-15 14:24:19 +0900
|
70
69
|
|
71
|
-
|
70
|
+
[DOC] Package files for RDoc
|
72
71
|
|
73
|
-
|
72
|
+
commit f5018a8b1ce82f7ac7458d00d099a454c3c03ea1
|
73
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
74
|
+
AuthorDate: 2024-04-15 14:05:43 +0900
|
75
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
76
|
+
CommitDate: 2024-04-15 14:05:43 +0900
|
74
77
|
|
75
|
-
|
76
|
-
Author: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
77
|
-
AuthorDate: 2023-03-24 13:01:25 +0900
|
78
|
-
Commit: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
79
|
-
CommitDate: 2023-03-24 13:38:04 +0900
|
78
|
+
bump up to 0.5.0
|
80
79
|
|
81
|
-
|
80
|
+
commit ece4bb2673c7fa9f53133ba91bbffd423ebadc90
|
81
|
+
Author: Koichi Sasada <ko1@atdot.net>
|
82
|
+
AuthorDate: 2024-03-27 07:29:38 +0900
|
83
|
+
Commit: Koichi Sasada <ko1@atdot.net>
|
84
|
+
CommitDate: 2024-04-15 12:08:07 +0900
|
82
85
|
|
83
|
-
|
84
|
-
Author: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
85
|
-
AuthorDate: 2023-02-18 16:37:54 +0900
|
86
|
-
Commit: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
87
|
-
CommitDate: 2023-02-18 16:46:18 +0900
|
86
|
+
show warning for unused block
|
88
87
|
|
89
|
-
|
88
|
+
With verbopse mode (-w), the interpreter shows a warning if
|
89
|
+
a block is passed to a method which does not use the given block.
|
90
90
|
|
91
|
-
|
92
|
-
Author: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
93
|
-
AuthorDate: 2023-02-18 16:31:55 +0900
|
94
|
-
Commit: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
95
|
-
CommitDate: 2023-02-18 16:46:18 +0900
|
91
|
+
Warning on:
|
96
92
|
|
97
|
-
|
93
|
+
* the invoked method is not written in C
|
94
|
+
* the invoked method is not `initialize`
|
95
|
+
* not invoked with `super`
|
96
|
+
* the first time on the call-site with the invoked method
|
97
|
+
(`obj.foo{}` will be warned once if `foo` is same method)
|
98
98
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
99
|
+
[Feature #15554]
|
100
|
+
|
101
|
+
`Primitive.attr! :use_block` is introduced to declare that primitive
|
102
|
+
functions (written in C) will use passed block.
|
103
|
+
|
104
|
+
For minitest, test needs some tweak, so use
|
105
|
+
https://github.com/minitest/minitest/commit/ea9caafc0754b1d6236a490d59e624b53209734a
|
106
|
+
for `test-bundled-gems`.
|
107
|
+
|
108
|
+
ruby/ruby@9180e33ca3a5886fec3f9e0a2f48072b55914e65
|
109
|
+
|
110
|
+
commit 77dccce37cb9fd1b8fbc52160d4103d1c4579669
|
111
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
112
|
+
AuthorDate: 2024-03-01 01:24:05 +0900
|
113
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
114
|
+
CommitDate: 2024-03-01 01:24:05 +0900
|
115
|
+
|
116
|
+
Invoke pager for `--help`
|
117
|
+
|
118
|
+
commit 59b9fd7ddca3e795c235aa397655b51de2e4c949
|
119
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
120
|
+
AuthorDate: 2024-02-23 21:49:57 +0900
|
121
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
122
|
+
CommitDate: 2024-02-23 21:49:57 +0900
|
104
123
|
|
105
|
-
|
124
|
+
[DOC] About return value of OptionParser#new
|
106
125
|
|
107
|
-
commit
|
108
|
-
Author:
|
109
|
-
AuthorDate:
|
126
|
+
commit 07e83673a8e99b5b7985608a69f713abde3344f6
|
127
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
128
|
+
AuthorDate: 2024-02-21 13:42:11 +0900
|
129
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
130
|
+
CommitDate: 2024-02-23 21:13:51 +0900
|
131
|
+
|
132
|
+
Add `exact:` keyword argument
|
133
|
+
|
134
|
+
commit bbec64d0c7f198429b62468b64b27692efa18dc2
|
135
|
+
Author: Yusuke Endoh <mame@ruby-lang.org>
|
136
|
+
AuthorDate: 2024-01-19 16:03:38 +0900
|
110
137
|
Commit: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
111
|
-
CommitDate:
|
138
|
+
CommitDate: 2024-02-16 10:47:36 +0900
|
139
|
+
|
140
|
+
Do not include a backtick in error messages and backtraces
|
112
141
|
|
113
|
-
|
142
|
+
[Feature #16495]
|
114
143
|
|
115
|
-
commit
|
116
|
-
Author:
|
117
|
-
AuthorDate:
|
118
|
-
Commit:
|
119
|
-
CommitDate:
|
144
|
+
commit 451dea51a0e5d062fb4cb75b1073a2c2b8609bef
|
145
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
146
|
+
AuthorDate: 2024-02-12 01:30:58 +0900
|
147
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
148
|
+
CommitDate: 2024-02-12 01:30:58 +0900
|
149
|
+
|
150
|
+
[DOC] Add description of OptionParser#define_by_keywords
|
120
151
|
|
121
|
-
|
152
|
+
commit 33956ce93f56320978cedfcebb8b6cf18bf96c53
|
153
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
154
|
+
AuthorDate: 2024-02-12 01:07:05 +0900
|
155
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
156
|
+
CommitDate: 2024-02-12 01:07:05 +0900
|
122
157
|
|
123
|
-
|
158
|
+
[DOC] Add missing documents
|
124
159
|
|
125
|
-
commit
|
126
|
-
Author:
|
127
|
-
AuthorDate:
|
160
|
+
commit 78afdab30751e1b7cf80bb57d6696b10879f90fe
|
161
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
162
|
+
AuthorDate: 2024-02-10 22:56:32 +0900
|
128
163
|
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
129
|
-
CommitDate:
|
164
|
+
CommitDate: 2024-02-10 22:56:32 +0900
|
130
165
|
|
131
|
-
|
166
|
+
Search exactly when `require_exact`
|
132
167
|
|
133
|
-
|
168
|
+
To work with options defined as `--[no]-something`.
|
169
|
+
|
170
|
+
Fix https://bugs.ruby-lang.org/issues/20252
|
171
|
+
Fix #60
|
172
|
+
|
173
|
+
commit 213cb03b5978ddacfbcc8f71ec837d9a6fd4c56d
|
134
174
|
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
135
|
-
AuthorDate:
|
175
|
+
AuthorDate: 2024-02-09 19:03:20 +0900
|
136
176
|
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
137
|
-
CommitDate:
|
177
|
+
CommitDate: 2024-02-09 19:03:20 +0900
|
178
|
+
|
179
|
+
Adjust arguments for lambda-callbacks
|
138
180
|
|
139
|
-
|
181
|
+
Rake uses [lambda] as callbacks.
|
182
|
+
Calling it without omitted argument raises an `ArgumentError`.
|
140
183
|
|
141
|
-
|
184
|
+
lambda: https://github.com/ruby/rake/blob/master/lib/rake/application.rb#L543
|
185
|
+
|
186
|
+
commit 9d53e74aa4421e0c4e2a805a0074ece5aae3773f
|
142
187
|
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
143
|
-
AuthorDate:
|
188
|
+
AuthorDate: 2024-02-09 12:59:43 +0900
|
144
189
|
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
145
|
-
CommitDate:
|
190
|
+
CommitDate: 2024-02-09 12:59:43 +0900
|
191
|
+
|
192
|
+
Respect default values in block parameters
|
146
193
|
|
147
|
-
|
194
|
+
Fix #55
|
148
195
|
|
149
|
-
commit
|
196
|
+
commit 4e346ad337f400dbff855798e859f17455698c2a
|
197
|
+
Author: fatkodima <fatkodima123@gmail.com>
|
198
|
+
AuthorDate: 2023-10-14 21:52:01 +0300
|
199
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
200
|
+
CommitDate: 2024-02-09 12:31:08 +0900
|
201
|
+
|
202
|
+
Fix `require_exact` to work with options defined as `--[no]-something`
|
203
|
+
|
204
|
+
commit b14c2c644d18cce226e49ccde8a23b5b991ea8cf
|
150
205
|
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
151
|
-
AuthorDate:
|
206
|
+
AuthorDate: 2024-02-09 12:17:31 +0900
|
207
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
208
|
+
CommitDate: 2024-02-09 12:17:31 +0900
|
209
|
+
|
210
|
+
Escape backslashes
|
211
|
+
|
212
|
+
commit 434e92fc62ff9571124335a2eedff56df83dae48
|
213
|
+
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
|
214
|
+
AuthorDate: 2023-12-18 03:43:27 +0000
|
152
215
|
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
153
|
-
CommitDate:
|
216
|
+
CommitDate: 2024-02-09 12:14:30 +0900
|
154
217
|
|
155
|
-
|
218
|
+
Bump actions/upload-artifact from 3 to 4
|
156
219
|
|
157
|
-
|
220
|
+
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
|
221
|
+
- [Release notes](https://github.com/actions/upload-artifact/releases)
|
222
|
+
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)
|
223
|
+
|
224
|
+
---
|
225
|
+
updated-dependencies:
|
226
|
+
- dependency-name: actions/upload-artifact
|
227
|
+
dependency-type: direct:production
|
228
|
+
update-type: version-update:semver-major
|
229
|
+
...
|
230
|
+
|
231
|
+
Signed-off-by: dependabot[bot] <support@github.com>
|
232
|
+
|
233
|
+
commit 48385d3eaf37cd10140274453eeadc4496581fc2
|
234
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
235
|
+
AuthorDate: 2024-02-09 12:01:44 +0900
|
236
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
237
|
+
CommitDate: 2024-02-09 12:06:40 +0900
|
238
|
+
|
239
|
+
Create codeql.yml
|
240
|
+
|
241
|
+
commit 294c6e1ed4b170a8a34ab95c84453829c170223c
|
242
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
243
|
+
AuthorDate: 2023-12-25 15:08:05 +0900
|
244
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
245
|
+
CommitDate: 2023-12-25 15:08:05 +0900
|
246
|
+
|
247
|
+
Build packages only on the latest release
|
248
|
+
|
249
|
+
commit 324ff21f042769444cde41949fc0321f6c6ccf63
|
250
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
251
|
+
AuthorDate: 2023-12-18 12:45:44 +0900
|
252
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
253
|
+
CommitDate: 2023-12-18 12:45:44 +0900
|
254
|
+
|
255
|
+
[DOC] Add missing documents
|
256
|
+
|
257
|
+
commit 667ab35f593f81b7850009385453d20ca8023bba
|
158
258
|
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
159
|
-
AuthorDate:
|
259
|
+
AuthorDate: 2023-12-18 12:24:46 +0900
|
160
260
|
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
161
|
-
CommitDate:
|
261
|
+
CommitDate: 2023-12-18 12:24:46 +0900
|
262
|
+
|
263
|
+
[DOC] Add missing secition
|
264
|
+
|
265
|
+
Fixes #51
|
266
|
+
|
267
|
+
commit 1c895efc39ed2290c185dcb80523fee381dfe74e
|
268
|
+
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
269
|
+
AuthorDate: 2023-12-18 12:15:31 +0900
|
270
|
+
Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
271
|
+
CommitDate: 2023-12-18 12:15:31 +0900
|
272
|
+
|
273
|
+
[DOC] Fix tutorial link
|
162
274
|
|
163
|
-
|
275
|
+
Fixes #51
|
@@ -0,0 +1 @@
|
|
1
|
+
*.rdoc
|
@@ -31,7 +31,7 @@ Contents:
|
|
31
31
|
- {Long Names with Optional Arguments}[#label-Long+Names+with+Optional+Arguments]
|
32
32
|
- {Long Names with Negation}[#label-Long+Names+with+Negation]
|
33
33
|
- {Mixed Names}[#label-Mixed+Names]
|
34
|
-
- {Argument
|
34
|
+
- {Argument Strings}[#label-Argument+Strings]
|
35
35
|
- {Argument Values}[#label-Argument+Values]
|
36
36
|
- {Explicit Argument Values}[#label-Explicit+Argument+Values]
|
37
37
|
- {Explicit Values in Array}[#label-Explicit+Values+in+Array]
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
parser = OptionParser.new
|
3
|
+
parser.on('-x', '--xxx=VALUE', %w[ABC def], 'Argument abbreviations') do |value|
|
4
|
+
p ['--xxx', value]
|
5
|
+
end
|
6
|
+
parser.on('-y', '--yyy=VALUE', {"abc"=>"XYZ", def: "FOO"}, 'Argument abbreviations') do |value|
|
7
|
+
p ['--yyy', value]
|
8
|
+
end
|
9
|
+
parser.parse!
|
data/doc/optparse/tutorial.rdoc
CHANGED
@@ -351,6 +351,29 @@ Executions:
|
|
351
351
|
|
352
352
|
Omitting an optional argument does not raise an error.
|
353
353
|
|
354
|
+
==== Argument Abbreviations
|
355
|
+
|
356
|
+
Specify an argument list as an Array or a Hash.
|
357
|
+
|
358
|
+
:include: ruby/argument_abbreviation.rb
|
359
|
+
|
360
|
+
When an argument is abbreviated, the expanded argument yielded.
|
361
|
+
|
362
|
+
Executions:
|
363
|
+
|
364
|
+
$ ruby argument_abbreviation.rb --help
|
365
|
+
Usage: argument_abbreviation [options]
|
366
|
+
Usage: argument_abbreviation [options]
|
367
|
+
-x, --xxx=VALUE Argument abbreviations
|
368
|
+
-y, --yyy=VALUE Argument abbreviations
|
369
|
+
$ ruby argument_abbreviation.rb --xxx A
|
370
|
+
["--xxx", "ABC"]
|
371
|
+
$ ruby argument_abbreviation.rb --xxx c
|
372
|
+
argument_abbreviation.rb:9:in `<main>': invalid argument: --xxx c (OptionParser::InvalidArgument)
|
373
|
+
$ ruby argument_abbreviation.rb --yyy a --yyy d
|
374
|
+
["--yyy", "XYZ"]
|
375
|
+
["--yyy", "FOO"]
|
376
|
+
|
354
377
|
=== Argument Values
|
355
378
|
|
356
379
|
Permissible argument values may be restricted
|
data/lib/optparse/ac.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
require_relative '../optparse'
|
3
3
|
|
4
|
+
#
|
5
|
+
# autoconf-like options.
|
6
|
+
#
|
4
7
|
class OptionParser::AC < OptionParser
|
8
|
+
# :stopdoc:
|
5
9
|
private
|
6
10
|
|
7
11
|
def _check_ac_args(name, block)
|
@@ -14,6 +18,7 @@ class OptionParser::AC < OptionParser
|
|
14
18
|
end
|
15
19
|
|
16
20
|
ARG_CONV = proc {|val| val.nil? ? true : val}
|
21
|
+
private_constant :ARG_CONV
|
17
22
|
|
18
23
|
def _ac_arg_enable(prefix, name, help_string, block)
|
19
24
|
_check_ac_args(name, block)
|
@@ -29,16 +34,27 @@ class OptionParser::AC < OptionParser
|
|
29
34
|
enable
|
30
35
|
end
|
31
36
|
|
37
|
+
# :startdoc:
|
38
|
+
|
32
39
|
public
|
33
40
|
|
41
|
+
# Define <tt>--enable</tt> / <tt>--disable</tt> style option
|
42
|
+
#
|
43
|
+
# Appears as <tt>--enable-<i>name</i></tt> in help message.
|
34
44
|
def ac_arg_enable(name, help_string, &block)
|
35
45
|
_ac_arg_enable("enable", name, help_string, block)
|
36
46
|
end
|
37
47
|
|
48
|
+
# Define <tt>--enable</tt> / <tt>--disable</tt> style option
|
49
|
+
#
|
50
|
+
# Appears as <tt>--disable-<i>name</i></tt> in help message.
|
38
51
|
def ac_arg_disable(name, help_string, &block)
|
39
52
|
_ac_arg_enable("disable", name, help_string, block)
|
40
53
|
end
|
41
54
|
|
55
|
+
# Define <tt>--with</tt> / <tt>--without</tt> style option
|
56
|
+
#
|
57
|
+
# Appears as <tt>--with-<i>name</i></tt> in help message.
|
42
58
|
def ac_arg_with(name, help_string, &block)
|
43
59
|
_check_ac_args(name, block)
|
44
60
|
|
data/lib/optparse/kwargs.rb
CHANGED
@@ -7,12 +7,17 @@ class OptionParser
|
|
7
7
|
#
|
8
8
|
# :include: ../../doc/optparse/creates_option.rdoc
|
9
9
|
#
|
10
|
-
|
11
|
-
|
10
|
+
# Defines options which set in to _options_ for keyword parameters
|
11
|
+
# of _method_.
|
12
|
+
#
|
13
|
+
# Parameters for each keywords are given as elements of _params_.
|
14
|
+
#
|
15
|
+
def define_by_keywords(options, method, **params)
|
16
|
+
method.parameters.each do |type, name|
|
12
17
|
case type
|
13
18
|
when :key, :keyreq
|
14
19
|
op, cl = *(type == :key ? %w"[ ]" : ["", ""])
|
15
|
-
define("--#{name}=#{op}#{name.upcase}#{cl}", *
|
20
|
+
define("--#{name}=#{op}#{name.upcase}#{cl}", *params[name]) do |o|
|
16
21
|
options[name] = o
|
17
22
|
end
|
18
23
|
end
|
data/lib/optparse/version.rb
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
# OptionParser internal utility
|
3
3
|
|
4
4
|
class << OptionParser
|
5
|
+
#
|
6
|
+
# Shows version string in packages if Version is defined.
|
7
|
+
#
|
8
|
+
# +pkgs+:: package list
|
9
|
+
#
|
5
10
|
def show_version(*pkgs)
|
6
11
|
progname = ARGV.options.program_name
|
7
12
|
result = false
|
@@ -47,6 +52,8 @@ class << OptionParser
|
|
47
52
|
result
|
48
53
|
end
|
49
54
|
|
55
|
+
# :stopdoc:
|
56
|
+
|
50
57
|
def each_const(path, base = ::Object)
|
51
58
|
path.split(/::|\//).inject(base) do |klass, name|
|
52
59
|
raise NameError, path unless Module === klass
|
@@ -68,4 +75,6 @@ class << OptionParser
|
|
68
75
|
end
|
69
76
|
end
|
70
77
|
end
|
78
|
+
|
79
|
+
# :startdoc:
|
71
80
|
end
|
data/lib/optparse.rb
CHANGED
@@ -8,7 +8,6 @@
|
|
8
8
|
# See OptionParser for documentation.
|
9
9
|
#
|
10
10
|
|
11
|
-
|
12
11
|
#--
|
13
12
|
# == Developer Documentation (not for RDoc output)
|
14
13
|
#
|
@@ -425,7 +424,8 @@
|
|
425
424
|
# If you have any questions, file a ticket at http://bugs.ruby-lang.org.
|
426
425
|
#
|
427
426
|
class OptionParser
|
428
|
-
|
427
|
+
# The version string
|
428
|
+
OptionParser::Version = "0.5.0"
|
429
429
|
|
430
430
|
# :stopdoc:
|
431
431
|
NoArgument = [NO_ARGUMENT = :NONE, nil].freeze
|
@@ -438,6 +438,8 @@ class OptionParser
|
|
438
438
|
# and resolved against a list of acceptable values.
|
439
439
|
#
|
440
440
|
module Completion
|
441
|
+
# :nodoc:
|
442
|
+
|
441
443
|
def self.regexp(key, icase)
|
442
444
|
Regexp.new('\A' + Regexp.quote(key).gsub(/\w+\b/, '\&\w*'), icase)
|
443
445
|
end
|
@@ -459,7 +461,7 @@ class OptionParser
|
|
459
461
|
candidates
|
460
462
|
end
|
461
463
|
|
462
|
-
def candidate(key, icase = false, pat = nil)
|
464
|
+
def candidate(key, icase = false, pat = nil, &_)
|
463
465
|
Completion.candidate(key, icase, pat, &method(:each))
|
464
466
|
end
|
465
467
|
|
@@ -510,6 +512,8 @@ class OptionParser
|
|
510
512
|
# RequiredArgument, etc.
|
511
513
|
#
|
512
514
|
class Switch
|
515
|
+
# :nodoc:
|
516
|
+
|
513
517
|
attr_reader :pattern, :conv, :short, :long, :arg, :desc, :block
|
514
518
|
|
515
519
|
#
|
@@ -697,6 +701,11 @@ class OptionParser
|
|
697
701
|
q.object_group(self) {pretty_print_contents(q)}
|
698
702
|
end
|
699
703
|
|
704
|
+
def omitted_argument(val) # :nodoc:
|
705
|
+
val.pop if val.size == 3 and val.last.nil?
|
706
|
+
val
|
707
|
+
end
|
708
|
+
|
700
709
|
#
|
701
710
|
# Switch that takes no arguments.
|
702
711
|
#
|
@@ -710,10 +719,10 @@ class OptionParser
|
|
710
719
|
conv_arg(arg)
|
711
720
|
end
|
712
721
|
|
713
|
-
def self.incompatible_argument_styles(*)
|
722
|
+
def self.incompatible_argument_styles(*) # :nodoc:
|
714
723
|
end
|
715
724
|
|
716
|
-
def self.pattern
|
725
|
+
def self.pattern # :nodoc:
|
717
726
|
Object
|
718
727
|
end
|
719
728
|
|
@@ -730,7 +739,7 @@ class OptionParser
|
|
730
739
|
#
|
731
740
|
# Raises an exception if argument is not present.
|
732
741
|
#
|
733
|
-
def parse(arg, argv)
|
742
|
+
def parse(arg, argv, &_)
|
734
743
|
unless arg
|
735
744
|
raise MissingArgument if argv.empty?
|
736
745
|
arg = argv.shift
|
@@ -755,7 +764,7 @@ class OptionParser
|
|
755
764
|
if arg
|
756
765
|
conv_arg(*parse_arg(arg, &error))
|
757
766
|
else
|
758
|
-
conv_arg(arg)
|
767
|
+
omitted_argument conv_arg(arg)
|
759
768
|
end
|
760
769
|
end
|
761
770
|
|
@@ -774,13 +783,14 @@ class OptionParser
|
|
774
783
|
#
|
775
784
|
def parse(arg, argv, &error)
|
776
785
|
if !(val = arg) and (argv.empty? or /\A-./ =~ (val = argv[0]))
|
777
|
-
return nil, block
|
786
|
+
return nil, block
|
778
787
|
end
|
779
788
|
opt = (val = parse_arg(val, &error))[1]
|
780
789
|
val = conv_arg(*val)
|
781
790
|
if opt and !arg
|
782
791
|
argv.shift
|
783
792
|
else
|
793
|
+
omitted_argument val
|
784
794
|
val[0] = nil
|
785
795
|
end
|
786
796
|
val
|
@@ -798,6 +808,8 @@ class OptionParser
|
|
798
808
|
# matching pattern and converter pair. Also provides summary feature.
|
799
809
|
#
|
800
810
|
class List
|
811
|
+
# :nodoc:
|
812
|
+
|
801
813
|
# Map from acceptable argument types to pattern and converter pairs.
|
802
814
|
attr_reader :atype
|
803
815
|
|
@@ -837,7 +849,7 @@ class OptionParser
|
|
837
849
|
def accept(t, pat = /.*/m, &block)
|
838
850
|
if pat
|
839
851
|
pat.respond_to?(:match) or
|
840
|
-
raise TypeError, "has no
|
852
|
+
raise TypeError, "has no 'match'", ParseError.filter_backtrace(caller(2))
|
841
853
|
else
|
842
854
|
pat = t if t.respond_to?(:match)
|
843
855
|
end
|
@@ -1033,11 +1045,31 @@ XXX
|
|
1033
1045
|
to << "#compdef #{name}\n"
|
1034
1046
|
to << COMPSYS_HEADER
|
1035
1047
|
visit(:compsys, {}, {}) {|o, d|
|
1036
|
-
to << %Q[ "#{o}[#{d.gsub(/[
|
1048
|
+
to << %Q[ "#{o}[#{d.gsub(/[\\\"\[\]]/, '\\\\\&')}]" \\\n]
|
1037
1049
|
}
|
1038
1050
|
to << " '*:file:_files' && return 0\n"
|
1039
1051
|
end
|
1040
1052
|
|
1053
|
+
def help_exit
|
1054
|
+
if STDOUT.tty? && (pager = ENV.values_at(*%w[RUBY_PAGER PAGER]).find {|e| e && !e.empty?})
|
1055
|
+
less = ENV["LESS"]
|
1056
|
+
args = [{"LESS" => "#{!less || less.empty? ? '-' : less}Fe"}, pager, "w"]
|
1057
|
+
print = proc do |f|
|
1058
|
+
f.puts help
|
1059
|
+
rescue Errno::EPIPE
|
1060
|
+
# pager terminated
|
1061
|
+
end
|
1062
|
+
if Process.respond_to?(:fork) and false
|
1063
|
+
IO.popen("-") {|f| f ? Process.exec(*args, in: f) : print.call(STDOUT)}
|
1064
|
+
# unreachable
|
1065
|
+
end
|
1066
|
+
IO.popen(*args, &print)
|
1067
|
+
else
|
1068
|
+
puts help
|
1069
|
+
end
|
1070
|
+
exit
|
1071
|
+
end
|
1072
|
+
|
1041
1073
|
#
|
1042
1074
|
# Default options for ARGV, which never appear in option summary.
|
1043
1075
|
#
|
@@ -1049,8 +1081,7 @@ XXX
|
|
1049
1081
|
#
|
1050
1082
|
Officious['help'] = proc do |parser|
|
1051
1083
|
Switch::NoArgument.new do |arg|
|
1052
|
-
|
1053
|
-
exit
|
1084
|
+
parser.help_exit
|
1054
1085
|
end
|
1055
1086
|
end
|
1056
1087
|
|
@@ -1129,6 +1160,10 @@ XXX
|
|
1129
1160
|
default.to_i + 1
|
1130
1161
|
end
|
1131
1162
|
end
|
1163
|
+
|
1164
|
+
#
|
1165
|
+
# See self.inc
|
1166
|
+
#
|
1132
1167
|
def inc(*args)
|
1133
1168
|
self.class.inc(*args)
|
1134
1169
|
end
|
@@ -1167,11 +1202,19 @@ XXX
|
|
1167
1202
|
def terminate(arg = nil)
|
1168
1203
|
self.class.terminate(arg)
|
1169
1204
|
end
|
1205
|
+
#
|
1206
|
+
# See #terminate.
|
1207
|
+
#
|
1170
1208
|
def self.terminate(arg = nil)
|
1171
1209
|
throw :terminate, arg
|
1172
1210
|
end
|
1173
1211
|
|
1174
1212
|
@stack = [DefaultList]
|
1213
|
+
#
|
1214
|
+
# Returns the global top option list.
|
1215
|
+
#
|
1216
|
+
# Do not use directly.
|
1217
|
+
#
|
1175
1218
|
def self.top() DefaultList end
|
1176
1219
|
|
1177
1220
|
#
|
@@ -1192,9 +1235,9 @@ XXX
|
|
1192
1235
|
#
|
1193
1236
|
# Directs to reject specified class argument.
|
1194
1237
|
#
|
1195
|
-
# +
|
1238
|
+
# +type+:: Argument class specifier, any object including Class.
|
1196
1239
|
#
|
1197
|
-
# reject(
|
1240
|
+
# reject(type)
|
1198
1241
|
#
|
1199
1242
|
def reject(*args, &blk) top.reject(*args, &blk) end
|
1200
1243
|
#
|
@@ -1284,10 +1327,24 @@ XXX
|
|
1284
1327
|
end
|
1285
1328
|
end
|
1286
1329
|
|
1330
|
+
#
|
1331
|
+
# Shows warning message with the program name
|
1332
|
+
#
|
1333
|
+
# +mesg+:: Message, defaulted to +$!+.
|
1334
|
+
#
|
1335
|
+
# See Kernel#warn.
|
1336
|
+
#
|
1287
1337
|
def warn(mesg = $!)
|
1288
1338
|
super("#{program_name}: #{mesg}")
|
1289
1339
|
end
|
1290
1340
|
|
1341
|
+
#
|
1342
|
+
# Shows message with the program name then aborts.
|
1343
|
+
#
|
1344
|
+
# +mesg+:: Message, defaulted to +$!+.
|
1345
|
+
#
|
1346
|
+
# See Kernel#abort.
|
1347
|
+
#
|
1291
1348
|
def abort(mesg = $!)
|
1292
1349
|
super("#{program_name}: #{mesg}")
|
1293
1350
|
end
|
@@ -1309,6 +1366,9 @@ XXX
|
|
1309
1366
|
#
|
1310
1367
|
# Pushes a new List.
|
1311
1368
|
#
|
1369
|
+
# If a block is given, yields +self+ and returns the result of the
|
1370
|
+
# block, otherwise returns +self+.
|
1371
|
+
#
|
1312
1372
|
def new
|
1313
1373
|
@stack.push(List.new)
|
1314
1374
|
if block_given?
|
@@ -1532,6 +1592,12 @@ XXX
|
|
1532
1592
|
nolong
|
1533
1593
|
end
|
1534
1594
|
|
1595
|
+
# ----
|
1596
|
+
# Option definition phase methods
|
1597
|
+
#
|
1598
|
+
# These methods are used to define options, or to construct an
|
1599
|
+
# OptionParser instance in other words.
|
1600
|
+
|
1535
1601
|
# :call-seq:
|
1536
1602
|
# define(*params, &block)
|
1537
1603
|
#
|
@@ -1607,6 +1673,13 @@ XXX
|
|
1607
1673
|
top.append(string, nil, nil)
|
1608
1674
|
end
|
1609
1675
|
|
1676
|
+
# ----
|
1677
|
+
# Arguments parse phase methods
|
1678
|
+
#
|
1679
|
+
# These methods parse +argv+, convert, and store the results by
|
1680
|
+
# calling handlers. As these methods do not modify +self+, +self+
|
1681
|
+
# can be frozen.
|
1682
|
+
|
1610
1683
|
#
|
1611
1684
|
# Parses command line arguments +argv+ in order. When a block is given,
|
1612
1685
|
# each non-option argument is yielded. When optional +into+ keyword
|
@@ -1616,21 +1689,21 @@ XXX
|
|
1616
1689
|
#
|
1617
1690
|
# Returns the rest of +argv+ left unparsed.
|
1618
1691
|
#
|
1619
|
-
def order(*argv,
|
1692
|
+
def order(*argv, **keywords, &nonopt)
|
1620
1693
|
argv = argv[0].dup if argv.size == 1 and Array === argv[0]
|
1621
|
-
order!(argv,
|
1694
|
+
order!(argv, **keywords, &nonopt)
|
1622
1695
|
end
|
1623
1696
|
|
1624
1697
|
#
|
1625
1698
|
# Same as #order, but removes switches destructively.
|
1626
1699
|
# Non-option arguments remain in +argv+.
|
1627
1700
|
#
|
1628
|
-
def order!(argv = default_argv, into: nil, &nonopt)
|
1701
|
+
def order!(argv = default_argv, into: nil, **keywords, &nonopt)
|
1629
1702
|
setter = ->(name, val) {into[name.to_sym] = val} if into
|
1630
|
-
parse_in_order(argv, setter, &nonopt)
|
1703
|
+
parse_in_order(argv, setter, **keywords, &nonopt)
|
1631
1704
|
end
|
1632
1705
|
|
1633
|
-
def parse_in_order(argv = default_argv, setter = nil, &nonopt) # :nodoc:
|
1706
|
+
def parse_in_order(argv = default_argv, setter = nil, exact: require_exact, **, &nonopt) # :nodoc:
|
1634
1707
|
opt, arg, val, rest = nil
|
1635
1708
|
nonopt ||= proc {|a| throw :terminate, a}
|
1636
1709
|
argv.unshift(arg) if arg = catch(:terminate) {
|
@@ -1641,19 +1714,24 @@ XXX
|
|
1641
1714
|
opt, rest = $1, $2
|
1642
1715
|
opt.tr!('_', '-')
|
1643
1716
|
begin
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1717
|
+
if exact
|
1718
|
+
sw, = search(:long, opt)
|
1719
|
+
else
|
1720
|
+
sw, = complete(:long, opt, true)
|
1648
1721
|
end
|
1649
1722
|
rescue ParseError
|
1650
1723
|
throw :terminate, arg unless raise_unknown
|
1651
1724
|
raise $!.set_option(arg, true)
|
1725
|
+
else
|
1726
|
+
unless sw
|
1727
|
+
throw :terminate, arg unless raise_unknown
|
1728
|
+
raise InvalidOption, arg
|
1729
|
+
end
|
1652
1730
|
end
|
1653
1731
|
begin
|
1654
|
-
opt, cb, val = sw.parse(rest, argv) {|*exc| raise(*exc)}
|
1655
|
-
val = cb
|
1656
|
-
setter
|
1732
|
+
opt, cb, *val = sw.parse(rest, argv) {|*exc| raise(*exc)}
|
1733
|
+
val = callback!(cb, 1, *val) if cb
|
1734
|
+
callback!(setter, 2, sw.switch_name, *val) if setter
|
1657
1735
|
rescue ParseError
|
1658
1736
|
raise $!.set_option(arg, rest)
|
1659
1737
|
end
|
@@ -1671,7 +1749,7 @@ XXX
|
|
1671
1749
|
val = arg.delete_prefix('-')
|
1672
1750
|
has_arg = true
|
1673
1751
|
rescue InvalidOption
|
1674
|
-
raise if
|
1752
|
+
raise if exact
|
1675
1753
|
# if no short options match, try completion with long
|
1676
1754
|
# options.
|
1677
1755
|
sw, = complete(:long, opt)
|
@@ -1683,7 +1761,7 @@ XXX
|
|
1683
1761
|
raise $!.set_option(arg, true)
|
1684
1762
|
end
|
1685
1763
|
begin
|
1686
|
-
opt, cb, val = sw.parse(val, argv) {|*exc| raise(*exc) if eq}
|
1764
|
+
opt, cb, *val = sw.parse(val, argv) {|*exc| raise(*exc) if eq}
|
1687
1765
|
rescue ParseError
|
1688
1766
|
raise $!.set_option(arg, arg.length > 2)
|
1689
1767
|
else
|
@@ -1691,8 +1769,8 @@ XXX
|
|
1691
1769
|
end
|
1692
1770
|
begin
|
1693
1771
|
argv.unshift(opt) if opt and (!rest or (opt = opt.sub(/\A-*/, '-')) != '-')
|
1694
|
-
val = cb
|
1695
|
-
setter
|
1772
|
+
val = callback!(cb, 1, *val) if cb
|
1773
|
+
callback!(setter, 2, sw.switch_name, *val) if setter
|
1696
1774
|
rescue ParseError
|
1697
1775
|
raise $!.set_option(arg, arg.length > 2)
|
1698
1776
|
end
|
@@ -1718,6 +1796,17 @@ XXX
|
|
1718
1796
|
end
|
1719
1797
|
private :parse_in_order
|
1720
1798
|
|
1799
|
+
# Calls callback with _val_.
|
1800
|
+
def callback!(cb, max_arity, *args) # :nodoc:
|
1801
|
+
if (size = args.size) < max_arity and cb.to_proc.lambda?
|
1802
|
+
(arity = cb.arity) < 0 and arity = (1-arity)
|
1803
|
+
arity = max_arity if arity > max_arity
|
1804
|
+
args[arity - 1] = nil if arity > size
|
1805
|
+
end
|
1806
|
+
cb.call(*args)
|
1807
|
+
end
|
1808
|
+
private :callback!
|
1809
|
+
|
1721
1810
|
#
|
1722
1811
|
# Parses command line arguments +argv+ in permutation mode and returns
|
1723
1812
|
# list of non-option arguments. When optional +into+ keyword
|
@@ -1725,18 +1814,18 @@ XXX
|
|
1725
1814
|
# <code>[]=</code> method (so it can be Hash, or OpenStruct, or other
|
1726
1815
|
# similar object).
|
1727
1816
|
#
|
1728
|
-
def permute(*argv,
|
1817
|
+
def permute(*argv, **keywords)
|
1729
1818
|
argv = argv[0].dup if argv.size == 1 and Array === argv[0]
|
1730
|
-
permute!(argv,
|
1819
|
+
permute!(argv, **keywords)
|
1731
1820
|
end
|
1732
1821
|
|
1733
1822
|
#
|
1734
1823
|
# Same as #permute, but removes switches destructively.
|
1735
1824
|
# Non-option arguments remain in +argv+.
|
1736
1825
|
#
|
1737
|
-
def permute!(argv = default_argv,
|
1826
|
+
def permute!(argv = default_argv, **keywords)
|
1738
1827
|
nonopts = []
|
1739
|
-
order!(argv,
|
1828
|
+
order!(argv, **keywords, &nonopts.method(:<<))
|
1740
1829
|
argv[0, 0] = nonopts
|
1741
1830
|
argv
|
1742
1831
|
end
|
@@ -1748,20 +1837,20 @@ XXX
|
|
1748
1837
|
# values are stored there via <code>[]=</code> method (so it can be Hash,
|
1749
1838
|
# or OpenStruct, or other similar object).
|
1750
1839
|
#
|
1751
|
-
def parse(*argv,
|
1840
|
+
def parse(*argv, **keywords)
|
1752
1841
|
argv = argv[0].dup if argv.size == 1 and Array === argv[0]
|
1753
|
-
parse!(argv,
|
1842
|
+
parse!(argv, **keywords)
|
1754
1843
|
end
|
1755
1844
|
|
1756
1845
|
#
|
1757
1846
|
# Same as #parse, but removes switches destructively.
|
1758
1847
|
# Non-option arguments remain in +argv+.
|
1759
1848
|
#
|
1760
|
-
def parse!(argv = default_argv,
|
1849
|
+
def parse!(argv = default_argv, **keywords)
|
1761
1850
|
if ENV.include?('POSIXLY_CORRECT')
|
1762
|
-
order!(argv,
|
1851
|
+
order!(argv, **keywords)
|
1763
1852
|
else
|
1764
|
-
permute!(argv,
|
1853
|
+
permute!(argv, **keywords)
|
1765
1854
|
end
|
1766
1855
|
end
|
1767
1856
|
|
@@ -1784,7 +1873,7 @@ XXX
|
|
1784
1873
|
# # params[:bar] = "x" # --bar x
|
1785
1874
|
# # params[:zot] = "z" # --zot Z
|
1786
1875
|
#
|
1787
|
-
def getopts(*args, symbolize_names: false)
|
1876
|
+
def getopts(*args, symbolize_names: false, **keywords)
|
1788
1877
|
argv = Array === args.first ? args.shift : default_argv
|
1789
1878
|
single_options, *long_options = *args
|
1790
1879
|
|
@@ -1812,7 +1901,7 @@ XXX
|
|
1812
1901
|
end
|
1813
1902
|
end
|
1814
1903
|
|
1815
|
-
parse_in_order(argv, result.method(:[]=))
|
1904
|
+
parse_in_order(argv, result.method(:[]=), **keywords)
|
1816
1905
|
symbolize_names ? result.transform_keys(&:to_sym) : result
|
1817
1906
|
end
|
1818
1907
|
|
@@ -1881,6 +1970,9 @@ XXX
|
|
1881
1970
|
DidYouMean.formatter.message_for(all_candidates & checker.correct(opt))
|
1882
1971
|
end
|
1883
1972
|
|
1973
|
+
#
|
1974
|
+
# Return candidates for +word+.
|
1975
|
+
#
|
1884
1976
|
def candidate(word)
|
1885
1977
|
list = []
|
1886
1978
|
case word
|
@@ -1922,10 +2014,10 @@ XXX
|
|
1922
2014
|
# The optional +into+ keyword argument works exactly like that accepted in
|
1923
2015
|
# method #parse.
|
1924
2016
|
#
|
1925
|
-
def load(filename = nil,
|
2017
|
+
def load(filename = nil, **keywords)
|
1926
2018
|
unless filename
|
1927
2019
|
basename = File.basename($0, '.*')
|
1928
|
-
return true if load(File.expand_path(basename, '~/.options'),
|
2020
|
+
return true if load(File.expand_path(basename, '~/.options'), **keywords) rescue nil
|
1929
2021
|
basename << ".options"
|
1930
2022
|
return [
|
1931
2023
|
# XDG
|
@@ -1937,11 +2029,11 @@ XXX
|
|
1937
2029
|
'~/config/settings',
|
1938
2030
|
].any? {|dir|
|
1939
2031
|
next if !dir or dir.empty?
|
1940
|
-
load(File.expand_path(basename, dir),
|
2032
|
+
load(File.expand_path(basename, dir), **keywords) rescue nil
|
1941
2033
|
}
|
1942
2034
|
end
|
1943
2035
|
begin
|
1944
|
-
parse(*File.readlines(filename, chomp: true),
|
2036
|
+
parse(*File.readlines(filename, chomp: true), **keywords)
|
1945
2037
|
true
|
1946
2038
|
rescue Errno::ENOENT, Errno::ENOTDIR
|
1947
2039
|
false
|
@@ -1954,10 +2046,10 @@ XXX
|
|
1954
2046
|
#
|
1955
2047
|
# +env+ defaults to the basename of the program.
|
1956
2048
|
#
|
1957
|
-
def environment(env = File.basename($0, '.*'))
|
2049
|
+
def environment(env = File.basename($0, '.*'), **keywords)
|
1958
2050
|
env = ENV[env] || ENV[env.upcase] or return
|
1959
2051
|
require 'shellwords'
|
1960
|
-
parse(*Shellwords.shellwords(env))
|
2052
|
+
parse(*Shellwords.shellwords(env), **keywords)
|
1961
2053
|
end
|
1962
2054
|
|
1963
2055
|
#
|
@@ -2123,6 +2215,7 @@ XXX
|
|
2123
2215
|
# Reason which caused the error.
|
2124
2216
|
Reason = 'parse error'
|
2125
2217
|
|
2218
|
+
# :nodoc:
|
2126
2219
|
def initialize(*args, additional: nil)
|
2127
2220
|
@additional = additional
|
2128
2221
|
@arg0, = args
|
@@ -2273,19 +2366,19 @@ XXX
|
|
2273
2366
|
# Parses +self+ destructively in order and returns +self+ containing the
|
2274
2367
|
# rest arguments left unparsed.
|
2275
2368
|
#
|
2276
|
-
def order!(&blk) options.order!(self, &blk) end
|
2369
|
+
def order!(**keywords, &blk) options.order!(self, **keywords, &blk) end
|
2277
2370
|
|
2278
2371
|
#
|
2279
2372
|
# Parses +self+ destructively in permutation mode and returns +self+
|
2280
2373
|
# containing the rest arguments left unparsed.
|
2281
2374
|
#
|
2282
|
-
def permute!() options.permute!(self) end
|
2375
|
+
def permute!(**keywords) options.permute!(self, **keywords) end
|
2283
2376
|
|
2284
2377
|
#
|
2285
2378
|
# Parses +self+ destructively and returns +self+ containing the
|
2286
2379
|
# rest arguments left unparsed.
|
2287
2380
|
#
|
2288
|
-
def parse!() options.parse!(self) end
|
2381
|
+
def parse!(**keywords) options.parse!(self, **keywords) end
|
2289
2382
|
|
2290
2383
|
#
|
2291
2384
|
# Substitution of getopts is possible as follows. Also see
|
@@ -2298,8 +2391,8 @@ XXX
|
|
2298
2391
|
# rescue OptionParser::ParseError
|
2299
2392
|
# end
|
2300
2393
|
#
|
2301
|
-
def getopts(*args, symbolize_names: false)
|
2302
|
-
options.getopts(self, *args, symbolize_names: symbolize_names)
|
2394
|
+
def getopts(*args, symbolize_names: false, **keywords)
|
2395
|
+
options.getopts(self, *args, symbolize_names: symbolize_names, **keywords)
|
2303
2396
|
end
|
2304
2397
|
|
2305
2398
|
#
|
@@ -2309,7 +2402,8 @@ XXX
|
|
2309
2402
|
super
|
2310
2403
|
obj.instance_eval {@optparse = nil}
|
2311
2404
|
end
|
2312
|
-
|
2405
|
+
|
2406
|
+
def initialize(*args) # :nodoc:
|
2313
2407
|
super
|
2314
2408
|
@optparse = nil
|
2315
2409
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: optparse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nobu Nakada
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: OptionParser is a class for command-line option analysis.
|
14
14
|
email:
|
@@ -17,12 +17,16 @@ executables: []
|
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
+
- ".document"
|
21
|
+
- ".rdoc_options"
|
20
22
|
- COPYING
|
21
23
|
- ChangeLog
|
22
24
|
- README.md
|
25
|
+
- doc/optparse/.document
|
23
26
|
- doc/optparse/argument_converters.rdoc
|
24
27
|
- doc/optparse/creates_option.rdoc
|
25
28
|
- doc/optparse/option_params.rdoc
|
29
|
+
- doc/optparse/ruby/argument_abbreviation.rb
|
26
30
|
- doc/optparse/ruby/argument_keywords.rb
|
27
31
|
- doc/optparse/ruby/argument_strings.rb
|
28
32
|
- doc/optparse/ruby/argv.rb
|
@@ -115,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
119
|
- !ruby/object:Gem::Version
|
116
120
|
version: '0'
|
117
121
|
requirements: []
|
118
|
-
rubygems_version: 3.5.
|
122
|
+
rubygems_version: 3.5.3
|
119
123
|
signing_key:
|
120
124
|
specification_version: 4
|
121
125
|
summary: OptionParser is a class for command-line option analysis.
|