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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a8da53dd37696e2528150ea2194a0b3455df79ce
4
- data.tar.gz: 531aa7eb5a3f7fac55f024c021f22aefe84b5d75
3
+ metadata.gz: e91dda59cda14727e357868705aa9b64ea6b2360
4
+ data.tar.gz: bb8bebd59f109aee136c869d50c70ab1ded2568d
5
5
  SHA512:
6
- metadata.gz: 182e5db95920e7adbd62786d608d8a8de0c29f85e266d4a3ab481ed24a5c7665fe51c9e1a6a498e78d43d08b3597f145a05bf464fa5c44013001685f849a0e33
7
- data.tar.gz: 72372e9151b6f1acf8efe591b9b1d9213acf52c5a042fd442d69c090908ba4f42d091297e6e709a5b18d317ba6f73d568448ce7c8a8a7749c6d720cf9f420513
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: 10th June 2016
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-2016, Matthew Wilson and Synesis Software
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 = name
138
- @aliases = (aliases || []).select { |a| a and not a.empty? }
139
- @help = help
140
- @values_range = values_range || []
141
- @default_value = default_value
142
- @extras = extras || {}
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
- # The flag's extras
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 parameters
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 parameters
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: 16th July 2016
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-2016, Matthew Wilson and Synesis Software
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.11.1'
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
@@ -2,7 +2,6 @@
2
2
  #
3
3
  # executes all other tests
4
4
 
5
- this_file = File.expand_path(__FILE__)
6
5
  this_dir = File.expand_path(File.dirname(__FILE__))
7
6
 
8
7
  # all tc_*rb in current directory
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.11.1
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: 2017-06-22 00:00:00.000000000 Z
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