clasp-ruby 0.17.0 → 0.18.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 476b60beb87db0936ad2bf1d5562cd68d2ba41fe
4
- data.tar.gz: ce781faefb3d24a1d431b48337fea7c1ebf2a0fb
3
+ metadata.gz: 119fcad10a9c01d575d47bc9f495fda5bb1869d1
4
+ data.tar.gz: 3a4c4edbf579ce92c968833ba2f13a857a7f69dd
5
5
  SHA512:
6
- metadata.gz: 95926ccb787ca5b0dd1d6920783d103e0e4bf91b21c14763e9ae4c62ef872718fe41fd868c2e1d3fc7a5b764da5e831b02d73d0794486a3acabaa82edf2cf11f
7
- data.tar.gz: e335964cf459fab293d7b9a790d7c66f34572844e8c5b544b0733283c5b37436ece225ddc5e845609dc422f7eb37ac90e928f59ad838bbdec29d7841e67e6e3d
6
+ metadata.gz: e7aa695f6ef62302ac3fb64a815017e8f256130c29abcbf9b81aeb82f378cd4233f8435b0355acc91d2c24c35107809c6fa9fbcfb171f28c50b5ed5aa3018277
7
+ data.tar.gz: f0347ac65f0a4ba087c486ba2d5492890fd3f69240e547c1c3b7371d59c5c178417179fa86592a786b9816bc5b296af17bc23a23adba5d3ff85830c473751d66
data/README.md CHANGED
@@ -96,7 +96,7 @@ like the following:
96
96
 
97
97
  PROGRAM_VERSION = '0.1.2'
98
98
 
99
- Aliases = [
99
+ Specifications = [
100
100
 
101
101
  CLASP.Flag('--all', alias: '-a', help: 'processes all item types'),
102
102
  CLASP.Flag('-c', help: 'count the processed items'),
@@ -109,7 +109,7 @@ Aliases = [
109
109
  ]
110
110
 
111
111
  # assuming the command-line `myprog -acv infile outfile`
112
- Args = CLASP::Arguments.new(ARGV, Aliases)
112
+ Args = CLASP::Arguments.new(ARGV, Specifications)
113
113
 
114
114
  puts Args.flags.size # => 2
115
115
  puts Args.flags[0].name # => "--all"
@@ -136,10 +136,10 @@ Args.flags.each do |f|
136
136
  case f.name
137
137
  when CLASP::Flag.Help.name
138
138
 
139
- CLASP.show_usage(Aliases, exit: 0, values: '<input-file> <output-file>')
139
+ CLASP.show_usage(Specifications, exit: 0, values: '<input-file> <output-file>')
140
140
  when CLASP::Flag.Version.name
141
141
 
142
- CLASP.show_version(Aliases, exit: 0, version: PROGRAM_VERSION)
142
+ CLASP.show_version(Specifications, exit: 0, version: PROGRAM_VERSION)
143
143
  when '--all'
144
144
 
145
145
  # do something appropriate to `--all`
@@ -18,7 +18,7 @@ require 'clasp'
18
18
 
19
19
  PROGRAM_VERSION = '0.1.2'
20
20
 
21
- Aliases = [
21
+ Specifications = [
22
22
 
23
23
  CLASP.Flag('--all', alias: '-a', help: 'processes all item types'),
24
24
  CLASP.Flag('-c', help: 'count the processed items'),
@@ -30,17 +30,17 @@ Aliases = [
30
30
  CLASP::Flag.Version,
31
31
  ]
32
32
 
33
- Args = CLASP::Arguments.new(ARGV, Aliases)
33
+ Args = CLASP::Arguments.new(ARGV, Specifications)
34
34
 
35
35
  Args.flags.each do |f|
36
36
 
37
37
  case f.name
38
38
  when CLASP::Flag.Help.name
39
39
 
40
- CLASP.show_usage(Aliases, exit: 0, values: '<input-file> <output-file>')
40
+ CLASP.show_usage(Specifications, exit: 0, values: '<input-file> <output-file>')
41
41
  when CLASP::Flag.Version.name
42
42
 
43
- CLASP.show_version(Aliases, exit: 0, version: PROGRAM_VERSION)
43
+ CLASP.show_version(Specifications, exit: 0, version: PROGRAM_VERSION)
44
44
  when '--all'
45
45
 
46
46
  ;
@@ -33,26 +33,26 @@ Flag_Debug = CLASP.Flag('--debug', alias: '-d', help: 'runs in Debug mode')
33
33
  Option_Verbosity = CLASP.Option('--verbosity', alias: '-v', help: 'specifies the verbosity', values: [ 'terse', 'quiet', 'silent', 'chatty' ])
34
34
  Flag_Chatty = CLASP.Flag('--verbosity=chatty', alias: '-c')
35
35
 
36
- Aliases = [
36
+ Specifications = [
37
37
 
38
38
  Flag_Debug,
39
39
  Option_Verbosity,
40
40
  Flag_Chatty,
41
41
 
42
- CLASP::FlagAlias.Help,
43
- CLASP::FlagAlias.Version,
42
+ CLASP::FlagSpecification.Help,
43
+ CLASP::FlagSpecification.Version,
44
44
  ]
45
45
 
46
- args = CLASP::Arguments.new ARGV, Aliases
46
+ args = CLASP::Arguments.new ARGV, Specifications
47
47
 
48
- if args.flags.include?(CLASP::FlagAlias.Help)
48
+ if args.flags.include?(CLASP::FlagSpecification.Help)
49
49
 
50
- CLASP.show_usage(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
50
+ CLASP.show_usage(Specifications, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
51
51
  end
52
52
 
53
53
  if args.flags.include?('--version')
54
54
 
55
- CLASP.show_version(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout)
55
+ CLASP.show_version(Specifications, exit_code: 0, version: ProgramVersion, stream: $stdout)
56
56
  end
57
57
 
58
58
 
@@ -24,26 +24,26 @@ Flag_Debug = CLASP.Flag('--debug', alias: '-d', help: 'runs in Debug mode')
24
24
  Option_Verbosity = CLASP.Option('--verbosity', alias: '-v', help: 'specifies the verbosity', values: [ 'terse', 'quiet', 'silent', 'chatty' ])
25
25
  Flag_Chatty = CLASP.Flag('--verbosity=chatty', alias: '-c')
26
26
 
27
- Aliases = [
27
+ Specifications = [
28
28
 
29
29
  Flag_Debug,
30
30
  Option_Verbosity,
31
31
  Flag_Chatty,
32
32
 
33
- CLASP::FlagAlias.Help,
34
- CLASP::FlagAlias.Version,
33
+ CLASP::FlagSpecification.Help,
34
+ CLASP::FlagSpecification.Version,
35
35
  ]
36
36
 
37
- args = CLASP::Arguments.new ARGV, Aliases
37
+ args = CLASP::Arguments.new ARGV, Specifications
38
38
 
39
- if args.flags.include?(CLASP::FlagAlias.Help)
39
+ if args.flags.include?(CLASP::FlagSpecification.Help)
40
40
 
41
- CLASP.show_usage(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
41
+ CLASP.show_usage(Specifications, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
42
42
  end
43
43
 
44
44
  if args.flags.include?('--version')
45
45
 
46
- CLASP.show_version(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout)
46
+ CLASP.show_version(Specifications, exit_code: 0, version: ProgramVersion, stream: $stdout)
47
47
  end
48
48
 
49
49
 
@@ -29,22 +29,22 @@ InfoLines = [
29
29
 
30
30
  # Specify aliases, parse, and checking standard flags
31
31
 
32
- Aliases = [
32
+ Specifications = [
33
33
 
34
- CLASP::FlagAlias.Help,
35
- CLASP::FlagAlias.Version,
34
+ CLASP::FlagSpecification.Help,
35
+ CLASP::FlagSpecification.Version,
36
36
  ]
37
37
 
38
- args = CLASP::Arguments.new ARGV, Aliases
38
+ args = CLASP::Arguments.new ARGV, Specifications
39
39
 
40
40
  if args.flags.include?('--help')
41
41
 
42
- CLASP.show_usage(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
42
+ CLASP.show_usage(Specifications, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
43
43
  end
44
44
 
45
45
  if args.flags.include?('--version')
46
46
 
47
- CLASP.show_version(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout)
47
+ CLASP.show_version(Specifications, exit_code: 0, version: ProgramVersion, stream: $stdout)
48
48
  end
49
49
 
50
50
 
@@ -20,22 +20,22 @@ InfoLines = [
20
20
 
21
21
  # Specify aliases, parse, and checking standard flags
22
22
 
23
- Aliases = [
23
+ Specifications = [
24
24
 
25
- CLASP::FlagAlias.Help,
26
- CLASP::FlagAlias.Version,
25
+ CLASP::FlagSpecification.Help,
26
+ CLASP::FlagSpecification.Version,
27
27
  ]
28
28
 
29
- args = CLASP::Arguments.new ARGV, Aliases
29
+ args = CLASP::Arguments.new ARGV, Specifications
30
30
 
31
31
  if args.flags.include?('--help')
32
32
 
33
- CLASP.show_usage(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
33
+ CLASP.show_usage(Specifications, exit_code: 0, version: ProgramVersion, stream: $stdout, info_lines: InfoLines)
34
34
  end
35
35
 
36
36
  if args.flags.include?('--version')
37
37
 
38
- CLASP.show_version(Aliases, exit_code: 0, version: ProgramVersion, stream: $stdout)
38
+ CLASP.show_version(Specifications, exit_code: 0, version: ProgramVersion, stream: $stdout)
39
39
  end
40
40
 
41
41
 
data/lib/clasp/aliases.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  # ######################################################################## #
3
3
  # File: clasp/aliases.rb
4
4
  #
5
- # Purpose: Alias classes
5
+ # Purpose: Argument specification classes
6
6
  #
7
7
  # Created: 25th October 2014
8
8
  # Updated: 10th April 2019
@@ -58,9 +58,9 @@ module CLASP
58
58
  # classes
59
59
 
60
60
  # A class that represents the specification for a command-line flag
61
- class FlagAlias
61
+ class FlagSpecification
62
62
 
63
- # Creates a FlagAlias instance from the given name, aliases, and help
63
+ # Creates a FlagSpecification instance from the given name, aliases, and help
64
64
  #
65
65
  # === Signature
66
66
  #
@@ -96,7 +96,7 @@ class FlagAlias
96
96
  @@Help_ = self.new('--help', [], 'shows this help and terminates')
97
97
  @@Version_ = self.new('--version', [], 'shows version and terminates')
98
98
  public
99
- # An instance of FlagAlias that provides default '--help' information
99
+ # An instance of FlagSpecification that provides default '--help' information
100
100
  def self.Help(extras = nil)
101
101
 
102
102
  h = @@Help_
@@ -106,7 +106,7 @@ class FlagAlias
106
106
  h
107
107
  end
108
108
 
109
- # An instance of FlagAlias that provides default '--version' information
109
+ # An instance of FlagSpecification that provides default '--version' information
110
110
  def self.Version(extras = nil)
111
111
 
112
112
  h = @@Version_
@@ -118,9 +118,9 @@ class FlagAlias
118
118
  end
119
119
 
120
120
  # A class that represents the specification for a command-line option
121
- class OptionAlias
121
+ class OptionSpecification
122
122
 
123
- # Creates an OptionAlias instance from the given name, aliases, help,
123
+ # Creates an OptionSpecification instance from the given name, aliases, help,
124
124
  # values_range, and default_value
125
125
  #
126
126
  # === Signature
@@ -198,7 +198,7 @@ class OptionAlias
198
198
  end
199
199
 
200
200
  # A class that represents an explicit alias for a flag or an option
201
- class Alias
201
+ class Specification
202
202
 
203
203
  def initialize(name, aliases)
204
204
 
@@ -227,7 +227,7 @@ end
227
227
  # ######################################################################## #
228
228
  # functions
229
229
 
230
- # Generator method that obtains a CLASP::FlagAlias according to the given
230
+ # Generator method that obtains a CLASP::FlagSpecification according to the given
231
231
  # parameters
232
232
  #
233
233
  # === Signature
@@ -277,10 +277,10 @@ def CLASP.Flag(name, options = {})
277
277
  end
278
278
  end
279
279
 
280
- CLASP::FlagAlias.new(name, aliases, help, extras)
280
+ CLASP::FlagSpecification.new(name, aliases, help, extras)
281
281
  end
282
282
 
283
- # Generator method that obtains a CLASP::OptionAlias according to the given
283
+ # Generator method that obtains a CLASP::OptionSpecification according to the given
284
284
  # parameters
285
285
  #
286
286
  # === Signature
@@ -360,7 +360,7 @@ def CLASP.Option(name, options = {})
360
360
  end
361
361
  end
362
362
 
363
- CLASP::OptionAlias.new(name, aliases, help, values_range, default_value, required, require_message, extras)
363
+ CLASP::OptionSpecification.new(name, aliases, help, values_range, default_value, required, require_message, extras)
364
364
  end
365
365
 
366
366
  def CLASP.Alias(name, *args)
@@ -379,14 +379,17 @@ def CLASP.Alias(name, *args)
379
379
  aliases = args
380
380
  end
381
381
 
382
- CLASP::Alias.new name, aliases
382
+ CLASP::Specification.new name, aliases
383
383
  end
384
384
 
385
385
  # ######################################################################## #
386
386
  # backwards-compatible
387
387
 
388
- Flag = FlagAlias
389
- Option = OptionAlias
388
+ Alias = Specification
389
+ Flag = FlagSpecification
390
+ FlagAlias = FlagSpecification
391
+ Option = OptionSpecification
392
+ OptionAlias = OptionSpecification
390
393
 
391
394
  # ######################################################################## #
392
395
  # module
@@ -226,13 +226,13 @@ class Arguments
226
226
  end
227
227
  end
228
228
 
229
- aliases = []
229
+ specifications = []
230
230
 
231
231
  _clasp = h['clasp'] or raise ArgumentError, "missing top-level 'clasp' element in load configuration"
232
232
  ::Hash === _clasp or raise ArgumentError, "top-level 'clasp' element must be a #{::Hash}"
233
233
 
234
- _specs = (_clasp['arg-specs'] || _clasp['aliases']) or raise ArgumentError, "missing element 'clasp/arg-specs'"
235
- ::Array === _specs or raise ArgumentError, "top-level 'arg-specs' element must be a #{::Hash}"
234
+ _specs = (_clasp['arg-specs'] || _clasp['specifications'] || _clasp['aliases']) or raise ArgumentError, "missing element 'clasp/specifications'"
235
+ ::Array === _specs or raise ArgumentError, "top-level 'specifications' element must be a #{::Hash}"
236
236
 
237
237
  _specs.each do |_spec|
238
238
 
@@ -250,14 +250,14 @@ class Arguments
250
250
 
251
251
  unless _name
252
252
 
253
- warn "flag arg-spec missing required 'name' field"
253
+ warn "flag specification missing required 'name' field"
254
254
  else
255
255
 
256
256
  _alias = _details['alias']
257
257
  _aliases = _details['aliases']
258
258
  _help = _details['help'] || _details['description']
259
259
 
260
- aliases << CLASP.Flag(_name, alias: _alias, aliases: _aliases, help: _help)
260
+ specifications << CLASP.Flag(_name, alias: _alias, aliases: _aliases, help: _help)
261
261
  end
262
262
  when 'option', :option
263
263
 
@@ -265,7 +265,7 @@ class Arguments
265
265
 
266
266
  unless _name
267
267
 
268
- warn "option arg-spec missing required 'name' field"
268
+ warn "option specification missing required 'name' field"
269
269
  else
270
270
 
271
271
  _alias = _details['alias']
@@ -276,7 +276,7 @@ class Arguments
276
276
  _required_message = _details['required_message']
277
277
  _values_range = _details['values_range'] || _details['values']
278
278
 
279
- aliases << CLASP.Option(_name, alias: _alias, aliases: _aliases, default_value: _default_value, help: _help, required: _required, required_message: _required_message, values_range: _values_range)
279
+ specifications << CLASP.Option(_name, alias: _alias, aliases: _aliases, default_value: _default_value, help: _help, required: _required, required_message: _required_message, values_range: _values_range)
280
280
  end
281
281
  when 'alias', :alias
282
282
 
@@ -284,7 +284,7 @@ class Arguments
284
284
 
285
285
  unless _resolved
286
286
 
287
- warn "alias arg-spec missing required 'resolved' field"
287
+ warn "alias specification missing required 'resolved' field"
288
288
  else
289
289
 
290
290
  _alias = _details['alias']
@@ -292,10 +292,10 @@ class Arguments
292
292
 
293
293
  unless _alias || _aliases
294
294
 
295
- warn "alias arg-spec missing required 'alias' or 'aliases' field"
295
+ warn "alias specification missing required 'alias' or 'aliases' field"
296
296
  else
297
297
 
298
- aliases << CLASP.Flag(_resolved, alias: _alias, aliases: _aliases)
298
+ specifications << CLASP.Flag(_resolved, alias: _alias, aliases: _aliases)
299
299
  end
300
300
  end
301
301
  else
@@ -305,11 +305,11 @@ class Arguments
305
305
  end
306
306
  else
307
307
 
308
- warn "non-#{::Hash} element in 'clasp/arg-specs': #{_spec} (of type #{_spec.class})"
308
+ warn "non-#{::Hash} element in 'clasp/specifications': #{_spec} (of type #{_spec.class})"
309
309
  end
310
310
  end
311
311
 
312
- self.new argv, aliases, options
312
+ self.new argv, specifications, options
313
313
  end
314
314
 
315
315
  # Constructs an instance of the class, according to the given parameters
@@ -320,13 +320,13 @@ class Arguments
320
320
  #
321
321
  # * *Parameters*:
322
322
  # - +argv+:: (+Array+) The arguments array. May not be +nil+. Defaults to +ARGV+.
323
- # - +aliases+:: (+Array+) The aliases array. Defaults to +nil+. If none supplied, no aliasing will be performed.
323
+ # - +specifications+:: (+Array+) The specifications array. Defaults to +nil+. If none supplied, no aliasing will be performed.
324
324
  # - +options+:: An options hash, containing any of the following options.
325
325
  #
326
326
  # * *Options*:
327
327
  # - +mutate_argv:+:: (+Boolean+) Determines if the library should mutate +argv+. Defaults to +true+. This is essential when using CLASP in conjunction with <tt>$\<</tt>.
328
328
  #
329
- def initialize(argv = ARGV, aliases = nil, options = {})
329
+ def initialize(argv = ARGV, specifications = nil, options = {})
330
330
 
331
331
  # have to do this name-swap, as 'options' has CLASP-specific
332
332
  # meaning
@@ -340,11 +340,11 @@ class Arguments
340
340
  argv = argv.dup
341
341
  @argv_original_copy = argv.dup.freeze
342
342
 
343
- @aliases = aliases
343
+ @specifications = specifications
344
344
 
345
- aliases = nil if aliases and aliases.empty?
345
+ specifications = nil if specifications and specifications.empty?
346
346
 
347
- flags, options, values = Arguments.parse(argv, aliases)
347
+ flags, options, values = Arguments.parse(argv, specifications)
348
348
 
349
349
  [ flags, options, values ].each do |ar|
350
350
 
@@ -403,7 +403,7 @@ class Arguments
403
403
  $0
404
404
  end
405
405
 
406
- def self.parse(argv, aliases)
406
+ def self.parse(argv, specifications)
407
407
 
408
408
  flags = []
409
409
  options = []
@@ -433,7 +433,7 @@ class Arguments
433
433
  argument_alias = nil
434
434
  resolved_name = nil
435
435
 
436
- (aliases || []).each do |a|
436
+ (specifications || []).each do |a|
437
437
 
438
438
  if a.name == given_name or a.aliases.include? given_name
439
439
 
@@ -454,7 +454,7 @@ class Arguments
454
454
  end
455
455
 
456
456
  # Here we intercept and (potentially) cater to grouped flags
457
- if not argument_alias and not value and aliases and 1 == hyphens.size
457
+ if not argument_alias and not value and specifications and 1 == hyphens.size
458
458
 
459
459
  # Must match all
460
460
  flag_aliases = []
@@ -465,10 +465,10 @@ class Arguments
465
465
  flag_alias = nil
466
466
 
467
467
  # special case where the flag's actual name is short form and found here
468
- flag_alias ||= aliases.detect { |a| a.is_a?(CLASP::FlagAlias) && a.name == new_flag }
468
+ flag_alias ||= specifications.detect { |a| a.is_a?(CLASP::FlagSpecification) && a.name == new_flag }
469
469
 
470
- # if not found as a flag, look in each aliases' aliases
471
- flag_alias ||= aliases.detect { |a| a.aliases.include? new_flag }
470
+ # if not found as a flag, look in each specifications' aliases
471
+ flag_alias ||= specifications.detect { |a| a.aliases.include? new_flag }
472
472
 
473
473
  if not flag_alias
474
474
 
@@ -489,7 +489,7 @@ class Arguments
489
489
  # convert to argv and invoke
490
490
  flags_argv = flag_aliases.map { |a| a.name }
491
491
 
492
- grp_flags, grp_options, grp_value = Arguments.parse flags_argv, aliases
492
+ grp_flags, grp_options, grp_value = Arguments.parse flags_argv, specifications
493
493
 
494
494
  grp_flags.map! { |f| FlagArgument.new(arg, index, given_name, f.name, f.argument_alias, hyphens.size, given_label, argument_alias ? argument_alias.extras : nil) }
495
495
  grp_options.map! { |o| OptionArgument.new(arg, index, given_name, o.name, o.argument_alias, hyphens.size, given_label, o.value, argument_alias ? argument_alias.extras : nil) }
@@ -502,7 +502,7 @@ class Arguments
502
502
  end
503
503
  end
504
504
 
505
- if argument_alias and argument_alias.is_a? CLASP::OptionAlias and not value
505
+ if argument_alias and argument_alias.is_a? CLASP::OptionSpecification and not value
506
506
 
507
507
  want_option_value = true
508
508
  options << OptionArgument.new(arg, index, given_name, resolved_name, argument_alias, hyphens.size, given_label, nil, argument_alias ? argument_alias.extras : nil)
@@ -544,8 +544,11 @@ class Arguments
544
544
  # Attributes
545
545
 
546
546
  public
547
- # an immutable array of aliases
548
- attr_reader :aliases
547
+ # an immutable array of specifications
548
+ attr_reader :specifications
549
+
550
+ # [DEPRECATED] Instead refer to +specifications+
551
+ def aliases; @specifications; end
549
552
 
550
553
  # an immutable array of flags
551
554
  attr_reader :flags
@@ -572,18 +575,18 @@ class Arguments
572
575
 
573
576
  raise ArgumentError, "options must be nil or Hash - #{option.class} given" unless options.is_a? ::Hash
574
577
 
575
- aliases = options[:aliases] || @aliases
578
+ specifications = options[:aliases] || @specifications
576
579
 
577
- raise ArgumentError, "aliases may not be nil" if aliases.nil?
580
+ raise ArgumentError, "specifications may not be nil" if specifications.nil?
578
581
 
579
582
  flags.each do |f|
580
583
 
581
- return f unless aliases.any? { |al| al.is_a?(::CLASP::FlagAlias) && al.name == f.name }
584
+ return f unless specifications.any? { |al| al.is_a?(::CLASP::FlagSpecification) && al.name == f.name }
582
585
  end
583
586
 
584
587
  self.options.each do |o|
585
588
 
586
- return o unless aliases.any? { |al| al.is_a?(::CLASP::OptionAlias) && al.name == o.name }
589
+ return o unless specifications.any? { |al| al.is_a?(::CLASP::OptionSpecification) && al.name == o.name }
587
590
  end
588
591
 
589
592
  nil
data/lib/clasp/cli.rb CHANGED
@@ -5,7 +5,7 @@
5
5
  # Purpose: Command-line interface
6
6
  #
7
7
  # Created: 27th July 2015
8
- # Updated: 19th March 2019
8
+ # Updated: 10th April 2019
9
9
  #
10
10
  # Home: http://github.com/synesissoftware/CLASP.Ruby
11
11
  #
@@ -64,7 +64,7 @@ module CLI_helpers_
64
64
 
65
65
  module Constants
66
66
 
67
- VALID_ALIAS_TYPES = [ FlagAlias, OptionAlias, Alias ]
67
+ VALID_ALIAS_TYPES = [ FlagSpecification, OptionSpecification, Specification ]
68
68
  VALID_ALIAS_TYPES_STRING = VALID_ALIAS_TYPES[0...-1].join(', ') + ', or ' + VALID_ALIAS_TYPES[-1].to_s
69
69
  end # module Constants
70
70
 
@@ -109,12 +109,12 @@ end # module CLI_helpers_
109
109
 
110
110
  # :startdoc:
111
111
 
112
- # Displays usage for the program according to the given aliases and options
112
+ # Displays usage for the program according to the given specifications and options
113
113
  #
114
114
  # === Signature
115
115
  #
116
116
  # * *Parameters*:
117
- # - +aliases+:: (+Array+) The arguments array. May not be +nil+. Defaults to +ARGV+.
117
+ # - +specifications+:: (+Array+) The arguments array. May not be +nil+. Defaults to +ARGV+.
118
118
  # - +options+:: An options hash, containing any of the following options.
119
119
  #
120
120
  # * *Options*:
@@ -125,18 +125,18 @@ end # module CLI_helpers_
125
125
  # - +:values+:: appends this string to USAGE line if specified.
126
126
  # - +:flags_and_options+:: inserts a custom string instead of the default string <tt>'[ ... flags and options ... ]'</tt>.
127
127
  # - +:info_lines+:: inserts 0+ information lines prior to the usage.
128
- def self.show_usage aliases, options={}
128
+ def self.show_usage specifications, options={}
129
129
 
130
130
  options ||= {}
131
131
 
132
- raise ArgumentError, "aliases may not be nil" if aliases.nil?
133
- raise TypeError, "aliases must be an array or must respond to each, reject and select" unless ::Array === aliases || (aliases.respond_to?(:each) && aliases.respond_to?(:reject) && aliases.respond_to?(:select))
132
+ raise ArgumentError, "specifications may not be nil" if specifications.nil?
133
+ raise TypeError, "specifications must be an array or must respond to each, reject and select" unless ::Array === specifications || (specifications.respond_to?(:each) && specifications.respond_to?(:reject) && specifications.respond_to?(:select))
134
134
 
135
135
  constants = CLI_helpers_::Constants
136
- aliases.each { |a| raise ::TypeError, "each element in aliases array must be one of the types #{constants::VALID_ALIAS_TYPES_STRING}" unless constants::VALID_ALIAS_TYPES.any? { |c| c === a } }
136
+ specifications.each { |a| raise ::TypeError, "each element in specifications array must be one of the types #{constants::VALID_ALIAS_TYPES_STRING}" unless constants::VALID_ALIAS_TYPES.any? { |c| c === a } }
137
137
 
138
138
  alias_dups = {}
139
- aliases.each { |a| a.aliases.each { |aa| warn "WARNING: alias '#{aa}' is already used for alias '#{a}'" if alias_dups.has_key? aa; alias_dups[aa] = a; } }
139
+ specifications.each { |a| a.aliases.each { |aa| warn "WARNING: alias '#{aa}' is already used for alias '#{a}'" if alias_dups.has_key? aa; alias_dups[aa] = a; } }
140
140
 
141
141
  suppress_blanks = options[:suppress_blank_lines_between_options] || ENV['SUPPRESS_BLANK_LINES_BETWEEN_OPTIONS']
142
142
 
@@ -173,11 +173,12 @@ def self.show_usage aliases, options={}
173
173
  flags_and_options = options[:flags_and_options] || ' [ ... flags and options ... ]'
174
174
  flags_and_options = " #{flags_and_options}" if !flags_and_options.empty? && ' ' != flags_and_options[0]
175
175
 
176
- # sift the aliases to sort out which are value-option aliases (VOAs)
176
+ # sift the specifications to sort out which are value-option
177
+ # specifications (VOAs)
177
178
 
178
179
  voas = {}
179
180
 
180
- aliases.select { |a| a.name =~ /^-+[a-zA-Z0-3_-]+[=:].+/ }.each do |a|
181
+ specifications.select { |a| a.name =~ /^-+[a-zA-Z0-3_-]+[=:].+/ }.each do |a|
181
182
 
182
183
  a.name =~ /^(-+[a-zA-Z0-3_-]+)[=:](.+)$/
183
184
 
@@ -187,30 +188,30 @@ def self.show_usage aliases, options={}
187
188
 
188
189
  fas = {}
189
190
 
190
- aliases.select { |a| Alias === a }.each do |a|
191
+ specifications.select { |a| Specification === a }.each do |a|
191
192
 
192
193
  fas[a.name] = [] unless fas.has_key? $1
193
194
  fas[a.name] << a
194
195
  end
195
196
 
196
- aliases = aliases.reject { |a| a.name =~ /^-+[a-zA-Z0-3_-]+[=:].+/ }
197
+ specifications = specifications.reject { |a| a.name =~ /^-+[a-zA-Z0-3_-]+[=:].+/ }
197
198
 
198
199
  info_lines.each { |info_line| stream.puts info_line } unless info_lines.empty?
199
200
 
200
201
  stream.puts "USAGE: #{program_name}#{flags_and_options}#{values}"
201
202
  stream.puts
202
203
 
203
- unless aliases.empty?
204
+ unless specifications.empty?
204
205
 
205
206
  stream.puts "flags/options:"
206
207
  stream.puts
207
- aliases.each do |a|
208
+ specifications.each do |a|
208
209
 
209
210
  case a
210
- when Alias
211
+ when Specification
211
212
 
212
213
  next
213
- when FlagAlias
214
+ when FlagSpecification
214
215
 
215
216
  if fas.has_key? a.name
216
217
 
@@ -222,7 +223,7 @@ def self.show_usage aliases, options={}
222
223
  a.aliases.each { |al| stream.puts "\t#{al}" }
223
224
  stream.puts "\t#{a.name}"
224
225
  stream.puts "\t\t#{a.help}"
225
- when OptionAlias
226
+ when OptionSpecification
226
227
 
227
228
  if voas.has_key? a.name
228
229
 
@@ -249,12 +250,12 @@ def self.show_usage aliases, options={}
249
250
  exit exit_code if exit_code
250
251
  end
251
252
 
252
- # Displays version for the program according to the given aliases and options
253
+ # Displays version for the program according to the given specifications and options
253
254
  #
254
255
  # === Signature
255
256
  #
256
257
  # * *Parameters*:
257
- # - +aliases+:: (+Array+) The arguments array. May not be +nil+. Defaults to +ARGV+.
258
+ # - +specifications+:: (+Array+) The arguments array. May not be +nil+. Defaults to +ARGV+.
258
259
  # - +options+:: An options hash, containing any of the following options.
259
260
  #
260
261
  # * *Options*:
@@ -267,15 +268,15 @@ end
267
268
  # - +:version_revision+:: a number or string. Only considered if +:version+ is not.
268
269
  # - +:version_build+:: a number or string. Only considered if +:version+ is not.
269
270
  # - +:version_prefix+:: optional string to prefix the version number(s).
270
- def self.show_version aliases, options = {}
271
+ def self.show_version specifications, options = {}
271
272
 
272
273
  options ||= {}
273
274
 
274
- raise ArgumentError, "aliases may not be nil" if aliases.nil?
275
- raise TypeError, "aliases must be an array or must respond to each, reject and select" unless ::Array === aliases || (aliases.respond_to?(:each) && aliases.respond_to?(:reject) && aliases.respond_to?(:select))
275
+ raise ArgumentError, "specifications may not be nil" if specifications.nil?
276
+ raise TypeError, "specifications must be an array or must respond to each, reject and select" unless ::Array === specifications || (specifications.respond_to?(:each) && specifications.respond_to?(:reject) && specifications.respond_to?(:select))
276
277
 
277
278
  constants = CLI_helpers_::Constants
278
- aliases.each { |a| raise ::TypeError, "each element in aliases array must be one of the types #{constants::VALID_ALIAS_TYPES_STRING}" unless constants::VALID_ALIAS_TYPES.any? { |c| c === a } }
279
+ specifications.each { |a| raise ::TypeError, "each element in specifications array must be one of the types #{constants::VALID_ALIAS_TYPES_STRING}" unless constants::VALID_ALIAS_TYPES.any? { |c| c === a } }
279
280
 
280
281
  stream = options[:stream] || $stdout
281
282
 
data/lib/clasp/version.rb CHANGED
@@ -51,7 +51,7 @@
51
51
  module CLASP
52
52
 
53
53
  # Current version of the CLASP.Ruby library
54
- VERSION = '0.17.0'
54
+ VERSION = '0.18.0'
55
55
 
56
56
  private
57
57
  VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
@@ -4,27 +4,27 @@ $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
4
4
 
5
5
  require 'clasp'
6
6
 
7
- Aliases = [
7
+ Specifications = [
8
8
 
9
9
  CLASP.Flag('--help', help: 'shows this help and quits'),
10
10
  CLASP.Flag('--version', alias: '-v', help: 'shows this version and quits'),
11
- CLASP.Alias('--version', aliases: [ '-ver', '-V' ]),
11
+ CLASP.Specification('--version', aliases: [ '-ver', '-V' ]),
12
12
 
13
13
  CLASP.Option('--directory', alias: '-d', help: 'a directory within which to process'),
14
14
  CLASP.Option('--patterns', alias: '-p', help: "one or more patterns against which the entries will be matched, separated by '|' or the platform-specific separator - ':' UNIX, ';' Windows"),
15
15
 
16
16
  CLASP.Option('--case-sensitive', alias: '-c', help: 'determines whether case sensitive', values_range: %W{ yes no true false }, default_value: false),
17
- CLASP.Alias('--case-sensitive=false', alias: '-I'),
17
+ CLASP.Specification('--case-sensitive=false', alias: '-I'),
18
18
  ]
19
19
 
20
- Arguments = CLASP::Arguments.new(ARGV, Aliases)
20
+ Arguments = CLASP::Arguments.new(ARGV, Specifications)
21
21
  Flags = Arguments.flags
22
22
  Options = Arguments.options
23
23
  Values = Arguments.values
24
24
 
25
25
  if Flags.include? '--help'
26
26
 
27
- CLASP.show_usage Aliases, exit: 0
27
+ CLASP.show_usage Specifications, exit: 0
28
28
  end
29
29
 
30
30
  Flags.each do |f|
@@ -4,7 +4,7 @@ $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
4
4
 
5
5
  require 'clasp'
6
6
 
7
- Aliases = [
7
+ Specifications = [
8
8
 
9
9
  CLASP.Flag('--help', help: 'shows this help and quits'),
10
10
  CLASP.Flag('--version', alias: '-v', help: 'shows this version and quits'),
@@ -12,7 +12,7 @@ Aliases = [
12
12
  CLASP.Option('--verbosity', aliases: %w{ -V --verbose }),
13
13
  ]
14
14
 
15
- Args = CLASP::Arguments.new(ARGV, Aliases)
15
+ Args = CLASP::Arguments.new(ARGV, Specifications)
16
16
 
17
17
  puts
18
18
  puts "flags #{Args.flags.size}:"
@@ -4,7 +4,7 @@ $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
4
4
 
5
5
  require 'clasp'
6
6
 
7
- Aliases = [
7
+ Specifications = [
8
8
 
9
9
  CLASP.Flag('--version', alias: '-v', help: 'shows the program version and quits'),
10
10
 
@@ -14,17 +14,17 @@ Aliases = [
14
14
  CLASP.Flag('--verbosity=verbose', alias: '--verbose'),
15
15
  ]
16
16
 
17
- Arguments = CLASP::Arguments.new(ARGV, Aliases)
17
+ Arguments = CLASP::Arguments.new(ARGV, Specifications)
18
18
 
19
19
  puts
20
20
  puts '*' * 40
21
21
  puts 'usage:'
22
22
  puts
23
- CLASP.show_usage(Aliases)
23
+ CLASP.show_usage(Specifications)
24
24
  puts '*' * 40
25
25
 
26
26
  puts 'version:'
27
27
  puts
28
- CLASP.show_version Aliases, version: [ 1, 2, 3 ]
28
+ CLASP.show_version Specifications, version: [ 1, 2, 3 ]
29
29
  puts '*' * 40
30
30
 
@@ -4,7 +4,7 @@ $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
4
4
 
5
5
  require 'clasp'
6
6
 
7
- Aliases = [
7
+ Specifications = [
8
8
 
9
9
  CLASP.Flag('--version', alias: '-v', help: 'shows the program version and quits'),
10
10
 
@@ -14,17 +14,17 @@ Aliases = [
14
14
  CLASP.Flag('--verbosity=verbose', aliases: [ '--verbose', '-v' ]),
15
15
  ]
16
16
 
17
- Arguments = CLASP::Arguments.new(ARGV, Aliases)
17
+ Arguments = CLASP::Arguments.new(ARGV, Specifications)
18
18
 
19
19
  puts
20
20
  puts '*' * 40
21
21
  puts 'usage:'
22
22
  puts
23
- CLASP.show_usage(Aliases)
23
+ CLASP.show_usage(Specifications)
24
24
  puts '*' * 40
25
25
 
26
26
  puts 'version:'
27
27
  puts
28
- CLASP.show_version Aliases, version: [ 1, 2, 3 ]
28
+ CLASP.show_version Specifications, version: [ 1, 2, 3 ]
29
29
  puts '*' * 40
30
30
 
@@ -6,7 +6,7 @@ require 'clasp'
6
6
 
7
7
  require 'test/unit'
8
8
 
9
- class Test_Aliases_1 < Test::Unit::TestCase
9
+ class Test_Specifications_1 < Test::Unit::TestCase
10
10
 
11
11
  def test_option_with_two_flag_aliases
12
12
 
data/test/unit/tc_cli.rb CHANGED
@@ -14,9 +14,9 @@ class Test_CLI < Test::Unit::TestCase
14
14
 
15
15
  def test_invalid_aliases_types
16
16
 
17
- assert_raise_with_message(::TypeError, 'each element in aliases array must be one of the types CLASP::FlagAlias, CLASP::OptionAlias, or CLASP::Alias') { CLASP.show_usage([ 'abc', :def ]) }
17
+ assert_raise_with_message(::TypeError, /each element in (?:aliases|specifications) array must be one of the types CLASP::FlagSpecification, CLASP::OptionSpecification, or CLASP::Specification/) { CLASP.show_usage([ 'abc', :def ]) }
18
18
 
19
- assert_raise_with_message(::TypeError, 'each element in aliases array must be one of the types CLASP::FlagAlias, CLASP::OptionAlias, or CLASP::Alias') { CLASP.show_version([ 'abc', :def ]) }
19
+ assert_raise_with_message(::TypeError, /each element in (?:aliases|specifications) array must be one of the types CLASP::FlagSpecification, CLASP::OptionSpecification, or CLASP::Specification/) { CLASP.show_version([ 'abc', :def ]) }
20
20
  end
21
21
  end
22
22
 
@@ -8,7 +8,7 @@ require 'test/unit'
8
8
 
9
9
  class Test_Examples < Test::Unit::TestCase
10
10
 
11
- def test_SimpleCommandLineNoAliases
11
+ def test_SimpleCommandLineNoSpecifications
12
12
 
13
13
  argv = %w{ --show-all=true infile -c outfile }
14
14
 
@@ -116,7 +116,7 @@ class Test_Examples < Test::Unit::TestCase
116
116
  assert_equal "outfile", args.values[1]
117
117
  end
118
118
 
119
- def test_UseOfFlagsAsAliasesForOption
119
+ def test_UseOfFlagsAsSpecificationsForOption
120
120
 
121
121
  aliases = [
122
122
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clasp-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Wilson