clasp-ruby 0.11.1 → 0.12.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|