clasp-ruby 0.11.1 → 0.12.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/clasp/aliases.rb +102 -14
- data/lib/clasp/version.rb +3 -3
- data/test/unit/tc_extras.rb +46 -0
- data/test/unit/tc_option_required.rb +51 -0
- data/test/unit/ts_all.rb +0 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e91dda59cda14727e357868705aa9b64ea6b2360
|
4
|
+
data.tar.gz: bb8bebd59f109aee136c869d50c70ab1ded2568d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4aa994801820d90d6acd54e86cd140f7617de6e7cb157bdce328ddda568264aacf98f348afbe4e504483b95ff98e98904e6cfc2bdabd307b7d838517f3b3b93b
|
7
|
+
data.tar.gz: 12b9257d551fc31b941011e4fc792928e850c1dc721380322586712f11243d411a5d4ff133e8fa9c102d4fad02ef35a416b15a663baf9eacd0c487f785870387
|
data/lib/clasp/aliases.rb
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
# Purpose: Alias classes
|
6
6
|
#
|
7
7
|
# Created: 25th October 2014
|
8
|
-
# Updated:
|
8
|
+
# Updated: 1st January 2018
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/CLASP.Ruby
|
11
11
|
#
|
12
12
|
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
-
# Copyright (c) 2014-
|
14
|
+
# Copyright (c) 2014-2018, Matthew Wilson and Synesis Software
|
15
15
|
# All rights reserved.
|
16
16
|
#
|
17
17
|
# Redistribution and use in source and binary forms, with or without
|
@@ -131,15 +131,45 @@ class Option
|
|
131
131
|
# - +help+:: (+String+) The help string, which may be +nil+.
|
132
132
|
# - +values_range+:: (+Array+) 0 or more strings specifying values supported by the option.
|
133
133
|
# - +default_value+:: (+String+) The default value of the option. May be +nil+.
|
134
|
+
# - +required+:: [boolean] Whether the option is required. May be
|
135
|
+
# +nil+
|
136
|
+
# - +required_message+:: [::String] Message to be used when reporting
|
137
|
+
# that a required option is missing. May be +nil+ in which case a
|
138
|
+
# message of the form "<option-name> not specified; use --help for
|
139
|
+
# usage". If begins with the nul character ("\0"), then is used in
|
140
|
+
# the place of the <option-name> and placed into the rest of the
|
141
|
+
# standard form message
|
134
142
|
# - +extras+:: An application-defined additional parameter. If +nil+, it is assigned an empty +Hash+.
|
135
|
-
def initialize(name, aliases, help, values_range, default_value, extras = nil)
|
143
|
+
def initialize(name, aliases, help, values_range, default_value, required, required_message, extras = nil)
|
136
144
|
|
137
|
-
@name
|
138
|
-
@aliases
|
139
|
-
@help
|
140
|
-
@values_range
|
141
|
-
@default_value
|
142
|
-
@
|
145
|
+
@name = name
|
146
|
+
@aliases = (aliases || []).select { |a| a and not a.empty? }
|
147
|
+
@help = help
|
148
|
+
@values_range = values_range || []
|
149
|
+
@default_value = default_value
|
150
|
+
@required = required
|
151
|
+
@required_message = nil
|
152
|
+
@extras = extras || {}
|
153
|
+
|
154
|
+
rm_name = nil
|
155
|
+
|
156
|
+
if required_message
|
157
|
+
|
158
|
+
if "\0" == required_message[0]
|
159
|
+
|
160
|
+
rm_name = required_message[1..-1]
|
161
|
+
end
|
162
|
+
else
|
163
|
+
|
164
|
+
rm_name = "'#{name}'"
|
165
|
+
end
|
166
|
+
|
167
|
+
if rm_name
|
168
|
+
|
169
|
+
required_message = "#{rm_name} not specified; use --help for usage"
|
170
|
+
end
|
171
|
+
|
172
|
+
@required_message = required_message
|
143
173
|
end
|
144
174
|
|
145
175
|
# The option's name string
|
@@ -152,20 +182,40 @@ class Option
|
|
152
182
|
attr_reader :values_range
|
153
183
|
# The default value of the option
|
154
184
|
attr_reader :default_value
|
155
|
-
#
|
185
|
+
# Indicates whether the option is required
|
186
|
+
def required?; @required; end
|
187
|
+
# The message to be used when reporting that a required option is
|
188
|
+
# missing
|
189
|
+
attr_reader :required_message
|
190
|
+
# The option's extras
|
156
191
|
attr_reader :extras
|
157
192
|
|
158
193
|
# String form of the option
|
159
194
|
def to_s
|
160
195
|
|
161
|
-
"{#{name}; aliases=#{aliases.join(', ')}; values_range=[ #{values_range.join(', ')} ]; default_value='#{default_value}'; help='#{help}'; extras=#{extras}}"
|
196
|
+
"{#{name}; aliases=#{aliases.join(', ')}; values_range=[ #{values_range.join(', ')} ]; default_value='#{default_value}'; help='#{help}'; required?=#{required?}; extras=#{extras}}"
|
162
197
|
end
|
163
198
|
end
|
164
199
|
|
165
200
|
# ######################################################################## #
|
166
201
|
# functions
|
167
202
|
|
168
|
-
# Generator method that obtains a CLASP::Flag according to the given
|
203
|
+
# Generator method that obtains a CLASP::Flag according to the given
|
204
|
+
# parameters
|
205
|
+
#
|
206
|
+
# === Signature
|
207
|
+
#
|
208
|
+
# * *Parameters:*
|
209
|
+
# - +name+:: [::String] The flag name, e.g. '--verbose'
|
210
|
+
# - +options+:: [::Hash] An options hash, containing any of the following
|
211
|
+
# options:
|
212
|
+
#
|
213
|
+
# * *Options:*
|
214
|
+
# - +:alias+ [::String] An alias, e.g. '-v'
|
215
|
+
# - +:aliases+ [::Array] An array of aliases, e.g. [ '-v', '-verb' ]
|
216
|
+
# - +:extras+ An application-defined object, usually a hash of custom
|
217
|
+
# attributes
|
218
|
+
# - +:help+ [::String] A help string
|
169
219
|
def CLASP.Flag(name, options = {})
|
170
220
|
|
171
221
|
aliases = nil
|
@@ -202,13 +252,44 @@ def CLASP.Flag(name, options = {})
|
|
202
252
|
CLASP::Flag.new(name, aliases, help, extras)
|
203
253
|
end
|
204
254
|
|
205
|
-
# Generator method that obtains a CLASP::Option according to the given
|
255
|
+
# Generator method that obtains a CLASP::Option according to the given
|
256
|
+
# parameters
|
257
|
+
#
|
258
|
+
# === Signature
|
259
|
+
#
|
260
|
+
# * *Parameters:*
|
261
|
+
# - +name+:: [::String] The flag name, e.g. '--verbose'
|
262
|
+
# - +options+:: [::Hash] An options hash, containing any of the following
|
263
|
+
# options:
|
264
|
+
#
|
265
|
+
# * *Options:*
|
266
|
+
# - +:alias+ [::String] An alias, e.g. '-v'
|
267
|
+
# - +:aliases+ [::Array] An array of aliases, e.g. [ '-v', '-verb' ]
|
268
|
+
# - +:default_value+ The default value for the option
|
269
|
+
# - +:default+ [DEPRECATED] Alternative to +:default_value+
|
270
|
+
# - +:extras+ An application-defined object, usually a hash of custom
|
271
|
+
# attributes
|
272
|
+
# - +:help+ [::String] A help string
|
273
|
+
# - +required+:: [boolean] Whether the option is required. May be
|
274
|
+
# +nil+
|
275
|
+
# - +required_message+:: [::String] Message to be used when reporting
|
276
|
+
# that a required option is missing. May be +nil+ in which case a
|
277
|
+
# message of the form "<option-name> not specified; use --help for
|
278
|
+
# usage". If begins with the nul character ("\0"), then is used in
|
279
|
+
# the place of the <option-name> and placed into the rest of the
|
280
|
+
# standard form message
|
281
|
+
# - +extras+:: An application-defined additional parameter. If +nil+, it is assigned an empty +Hash+.
|
282
|
+
# - +:values_range+ [::Array] An array defining the accepted values for
|
283
|
+
# the option
|
284
|
+
# - +:values+ [DEPRECATED] Alternative to +:values_range+
|
206
285
|
def CLASP.Option(name, options = {})
|
207
286
|
|
208
287
|
aliases = nil
|
209
288
|
help = nil
|
210
289
|
values_range = nil
|
211
290
|
default_value = nil
|
291
|
+
required = false
|
292
|
+
require_message = nil
|
212
293
|
extras = nil
|
213
294
|
|
214
295
|
options.each do |k, v|
|
@@ -231,6 +312,12 @@ def CLASP.Option(name, options = {})
|
|
231
312
|
when :default_value, :default
|
232
313
|
|
233
314
|
default_value = v
|
315
|
+
when :required
|
316
|
+
|
317
|
+
required = v
|
318
|
+
when :required_message
|
319
|
+
|
320
|
+
require_message = v
|
234
321
|
when :extras
|
235
322
|
|
236
323
|
extras = v
|
@@ -244,7 +331,7 @@ def CLASP.Option(name, options = {})
|
|
244
331
|
end
|
245
332
|
end
|
246
333
|
|
247
|
-
CLASP::Option.new(name, aliases, help, values_range, default_value, extras)
|
334
|
+
CLASP::Option.new(name, aliases, help, values_range, default_value, required, require_message, extras)
|
248
335
|
end
|
249
336
|
|
250
337
|
# ######################################################################## #
|
@@ -254,3 +341,4 @@ end # module CLASP
|
|
254
341
|
|
255
342
|
# ############################## end of file ############################# #
|
256
343
|
|
344
|
+
|
data/lib/clasp/version.rb
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
# Purpose: Version for CLASP.Ruby library
|
6
6
|
#
|
7
7
|
# Created: 16th November 2014
|
8
|
-
# Updated:
|
8
|
+
# Updated: 1st January 2018
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/CLASP.Ruby
|
11
11
|
#
|
12
12
|
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
-
# Copyright (c) 2014-
|
14
|
+
# Copyright (c) 2014-2018, Matthew Wilson and Synesis Software
|
15
15
|
# All rights reserved.
|
16
16
|
#
|
17
17
|
# Redistribution and use in source and binary forms, with or without
|
@@ -51,7 +51,7 @@
|
|
51
51
|
module CLASP
|
52
52
|
|
53
53
|
# Current version of the CLASP.Ruby library
|
54
|
-
VERSION = '0.
|
54
|
+
VERSION = '0.12.1'
|
55
55
|
|
56
56
|
private
|
57
57
|
VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
|
@@ -0,0 +1,46 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
4
|
+
|
5
|
+
require 'clasp'
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
|
9
|
+
class Test_extras_1 < Test::Unit::TestCase
|
10
|
+
|
11
|
+
def test_Option_with_no_extras
|
12
|
+
|
13
|
+
o = CLASP.Option('--verbose')
|
14
|
+
|
15
|
+
assert_equal '--verbose', o.name
|
16
|
+
assert_equal [], o.aliases
|
17
|
+
assert_equal [], o.values_range
|
18
|
+
assert_equal nil, o.default_value
|
19
|
+
assert_equal ({}), o.extras
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_Option_with_extras_as_symbol
|
23
|
+
|
24
|
+
o = CLASP.Option('--verbose', extras: :extras)
|
25
|
+
|
26
|
+
assert_equal '--verbose', o.name
|
27
|
+
assert_equal [], o.aliases
|
28
|
+
assert_equal [], o.values_range
|
29
|
+
assert_equal nil, o.default_value
|
30
|
+
assert_equal :extras, o.extras
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_Option_with_extras_as_hash
|
34
|
+
|
35
|
+
o = CLASP.Option('--verbose', extras: { :abc => 'abc', :def => 'def' })
|
36
|
+
|
37
|
+
assert_equal '--verbose', o.name
|
38
|
+
assert_equal [], o.aliases
|
39
|
+
assert_equal [], o.values_range
|
40
|
+
assert_equal nil, o.default_value
|
41
|
+
assert_equal ({ :abc => 'abc', :def => 'def' }), o.extras
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
4
|
+
|
5
|
+
require 'clasp'
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
|
9
|
+
class Test_Option_required < Test::Unit::TestCase
|
10
|
+
|
11
|
+
def test_Option_required_false_implicit
|
12
|
+
|
13
|
+
o = CLASP.Option('--verbose')
|
14
|
+
|
15
|
+
assert_equal '--verbose', o.name
|
16
|
+
assert_equal [], o.aliases
|
17
|
+
assert_equal [], o.values_range
|
18
|
+
assert_equal nil, o.default_value
|
19
|
+
assert_equal ({}), o.extras
|
20
|
+
assert_false o.required?
|
21
|
+
assert_equal "'--verbose' not specified; use --help for usage", o.required_message
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_Option_required_false_explicit
|
25
|
+
|
26
|
+
o = CLASP.Option('--verbose', required: false, required_message: "\0Verbosity")
|
27
|
+
|
28
|
+
assert_equal '--verbose', o.name
|
29
|
+
assert_equal [], o.aliases
|
30
|
+
assert_equal [], o.values_range
|
31
|
+
assert_equal nil, o.default_value
|
32
|
+
assert_equal ({}), o.extras
|
33
|
+
assert_false o.required?
|
34
|
+
assert_equal "Verbosity not specified; use --help for usage", o.required_message
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_Option_required_true
|
38
|
+
|
39
|
+
o = CLASP.Option('--verbose', required: true, required_message: 'Verbosity not given')
|
40
|
+
|
41
|
+
assert_equal '--verbose', o.name
|
42
|
+
assert_equal [], o.aliases
|
43
|
+
assert_equal [], o.values_range
|
44
|
+
assert_equal nil, o.default_value
|
45
|
+
assert_equal ({}), o.extras
|
46
|
+
assert_true o.required?
|
47
|
+
assert_equal "Verbosity not given", o.required_message
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
|
data/test/unit/ts_all.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clasp-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
Command-Line Argument Sorting and Parsing library that provides a powerful
|
@@ -42,7 +42,9 @@ files:
|
|
42
42
|
- test/unit/tc_arguments_3.rb
|
43
43
|
- test/unit/tc_defaults_1.rb
|
44
44
|
- test/unit/tc_examples_Arguments.rb
|
45
|
+
- test/unit/tc_extras.rb
|
45
46
|
- test/unit/tc_immutable_array.rb
|
47
|
+
- test/unit/tc_option_required.rb
|
46
48
|
- test/unit/tc_usage.rb
|
47
49
|
- test/unit/tc_util_immutable_array.rb
|
48
50
|
- test/unit/ts_all.rb
|