clasp-ruby 0.23.0.2 → 0.23.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.
@@ -1,17 +1,17 @@
1
1
 
2
2
  # ######################################################################## #
3
- # File: clasp/util/exceptions.rb
3
+ # File: clasp/util/exceptions.rb
4
4
  #
5
- # Purpose: Exception classes
5
+ # Purpose: Exception classes
6
6
  #
7
- # Created: 20th April 2019
8
- # Updated: 20th January 2024
7
+ # Created: 20th April 2019
8
+ # Updated: 6th March 2025
9
9
  #
10
- # Home: http://github.com/synesissoftware/CLASP.Ruby
10
+ # Home: http://github.com/synesissoftware/CLASP.Ruby
11
11
  #
12
- # Author: Matthew Wilson
12
+ # Author: Matthew Wilson
13
13
  #
14
- # Copyright (c) 2019-2024, Matthew Wilson and Synesis Software
14
+ # Copyright (c) 2019-2025, Matthew Wilson and Synesis Information Systems
15
15
  # All rights reserved.
16
16
  #
17
17
  # Redistribution and use in source and binary forms, with or without
@@ -53,27 +53,26 @@ module CLASP # :nodoc:
53
53
  # Exceptions
54
54
  module Exceptions
55
55
 
56
- # Root exception for CLASP
57
- class CLASPException < RuntimeError; end
56
+ # Root exception for CLASP
57
+ class CLASPException < RuntimeError; end
58
58
 
59
- # Root exception for value parsing
60
- class ValueParserException < CLASPException; end
59
+ # Root exception for value parsing
60
+ class ValueParserException < CLASPException; end
61
61
 
62
- # No value specified (and no default value) for an option
63
- class MissingValueException < ValueParserException; end
62
+ # No value specified (and no default value) for an option
63
+ class MissingValueException < ValueParserException; end
64
64
 
65
- # Exception class indicating invalid values (as opposed to types)
66
- class InvalidValueException < ValueParserException; end
65
+ # Exception class indicating invalid values (as opposed to types)
66
+ class InvalidValueException < ValueParserException; end
67
67
 
68
- # The given value could not be recognised as a (properly-formatted) number
69
- class InvalidNumberException < InvalidValueException; end
68
+ # The given value could not be recognised as a (properly-formatted) number
69
+ class InvalidNumberException < InvalidValueException; end
70
70
 
71
- # The given value could not be recognised as a (properly-formatted) integer
72
- class InvalidIntegerException < InvalidNumberException; end
73
-
74
- # The value was a valid integer but is out of range
75
- class IntegerOutOfRangeException < InvalidValueException; end
71
+ # The given value could not be recognised as a (properly-formatted) integer
72
+ class InvalidIntegerException < InvalidNumberException; end
76
73
 
74
+ # The value was a valid integer but is out of range
75
+ class IntegerOutOfRangeException < InvalidValueException; end
77
76
  end # module Exceptions
78
77
  end # module CLASP
79
78
 
@@ -1,17 +1,17 @@
1
1
 
2
2
  # ######################################################################## #
3
- # File: clasp/util/value_parser.rb
3
+ # File: clasp/util/value_parser.rb
4
4
  #
5
- # Purpose: Utility component for typed values
5
+ # Purpose: Utility component for typed values
6
6
  #
7
- # Created: 20th April 2019
8
- # Updated: 20th January 2024
7
+ # Created: 20th April 2019
8
+ # Updated: 6th March 2025
9
9
  #
10
- # Home: http://github.com/synesissoftware/CLASP.Ruby
10
+ # Home: http://github.com/synesissoftware/CLASP.Ruby
11
11
  #
12
- # Author: Matthew Wilson
12
+ # Author: Matthew Wilson
13
13
  #
14
- # Copyright (c) 2019-2024, Matthew Wilson and Synesis Software
14
+ # Copyright (c) 2019-2025, 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
@@ -56,162 +56,160 @@ module Util # :nodoc:
56
56
  # @!visibility private
57
57
  module ValueParser # :nodoc: all
58
58
 
59
- module Internal_ # :nodoc: all
59
+ module Internal_ # :nodoc: all
60
60
 
61
- include Exceptions
61
+ include Exceptions
62
62
 
63
- def self.is_integer? type
63
+ def self.is_integer? type
64
64
 
65
- h = {}
65
+ return true if Integer == type
66
+ return true if :integer == type
66
67
 
67
- return true if Integer == type
68
- return true if :integer == type
69
-
70
- false
71
- end
72
-
73
- def self.obtain_integer value, constraint, argument_spec
68
+ false
69
+ end
74
70
 
75
- # If no value is given, then use the default (and don't do any
76
- # range testing)
71
+ def self.obtain_integer value, constraint, argument_spec
77
72
 
78
- if (value || '').empty?
73
+ # If no value is given, then use the default (and don't do any
74
+ # range testing)
79
75
 
80
- def_value = argument_spec.default_value
76
+ if (value || '').empty?
81
77
 
82
- if (def_value || '').to_s.empty?
78
+ def_value = argument_spec.default_value
83
79
 
84
- msg = "no value specified for the option '#{argument_spec.name}', which has no default value either"
80
+ if (def_value || '').to_s.empty?
85
81
 
86
- warn msg if $DEBUG
82
+ msg = "no value specified for the option '#{argument_spec.name}', which has no default value either"
87
83
 
88
- raise MissingValueException, msg
89
- end
84
+ warn msg if $DEBUG
90
85
 
91
- begin
86
+ raise MissingValueException, msg
87
+ end
92
88
 
93
- return Integer(def_value)
94
- rescue ArgumentError => x
89
+ begin
95
90
 
96
- msg = "default value '#{def_value}' specified for option '#{argument_spec.name}' that requires the value to be an integer"
91
+ return Integer(def_value)
92
+ rescue ArgumentError => _x
97
93
 
98
- warn msg if $DEBUG
94
+ msg = "default value '#{def_value}' specified for option '#{argument_spec.name}' that requires the value to be an integer"
99
95
 
100
- raise InvalidIntegerException, msg
101
- end
102
- end
96
+ warn msg if $DEBUG
103
97
 
104
- # obtain the integer from the value
98
+ raise InvalidIntegerException, msg
99
+ end
100
+ end
105
101
 
106
- v = nil
102
+ # obtain the integer from the value
107
103
 
108
- begin
104
+ v = nil
109
105
 
110
- v = Integer(value)
111
- rescue ArgumentError => x
106
+ begin
112
107
 
113
- msg = "value '#{value}' specified for option '#{argument_spec.name}' that requires the value to be an integer"
108
+ v = Integer(value)
109
+ rescue ArgumentError => _x
114
110
 
115
- warn msg if $DEBUG
111
+ msg = "value '#{value}' specified for option '#{argument_spec.name}' that requires the value to be an integer"
116
112
 
117
- raise InvalidIntegerException, msg
118
- end
113
+ warn msg if $DEBUG
119
114
 
120
- # Is there a value constraint?:
121
- #
122
- # - values (obtained from argument_spec#values)
123
- # - range
124
- # - minimum & maximum
115
+ raise InvalidIntegerException, msg
116
+ end
125
117
 
126
- values_range = argument_spec.values_range
118
+ # Is there a value constraint?:
119
+ #
120
+ # - values (obtained from argument_spec#values)
121
+ # - range
122
+ # - minimum & maximum
127
123
 
128
- unless values_range.empty?
124
+ values_range = argument_spec.values_range
129
125
 
130
- v_s = v.to_s
126
+ unless values_range.empty?
131
127
 
132
- v_s = '+' + v_s unless '-' == v_s[0]
128
+ v_s = v.to_s
133
129
 
134
- vr_s = values_range.map { |x| x.to_s }.map { |x| '-' == x[0] ? x : '+' + x }
130
+ v_s = '+' + v_s unless '-' == v_s[0]
135
131
 
136
- unless vr_s.include? v_s
132
+ vr_s = values_range.map { |x| x.to_s }.map { |x| '-' == x[0] ? x : '+' + x }
137
133
 
138
- msg = "given value '#{value}' specified for option '#{argument_spec.name}' does not fall within the required range"
134
+ unless vr_s.include? v_s
139
135
 
140
- raise IntegerOutOfRangeException, msg
141
- end
142
- else
136
+ msg = "given value '#{value}' specified for option '#{argument_spec.name}' does not fall within the required range"
143
137
 
144
- case range = constraint[:range]
145
- when :negative
138
+ raise IntegerOutOfRangeException, msg
139
+ end
140
+ else
146
141
 
147
- if v >= 0
142
+ case range = constraint[:range]
143
+ when :negative
148
144
 
149
- msg = "given value '#{value}' specified for option '#{argument_spec.name}' must be a negative integer"
145
+ if v >= 0
150
146
 
151
- raise IntegerOutOfRangeException, msg
152
- end
153
- when :positive
147
+ msg = "given value '#{value}' specified for option '#{argument_spec.name}' must be a negative integer"
154
148
 
155
- if v < 1
149
+ raise IntegerOutOfRangeException, msg
150
+ end
151
+ when :positive
156
152
 
157
- msg = "given value '#{value}' specified for option '#{argument_spec.name}' must be a positive integer"
153
+ if v < 1
158
154
 
159
- raise IntegerOutOfRangeException, msg
160
- end
161
- when :non_positive
155
+ msg = "given value '#{value}' specified for option '#{argument_spec.name}' must be a positive integer"
162
156
 
163
- if v > 0
157
+ raise IntegerOutOfRangeException, msg
158
+ end
159
+ when :non_positive
164
160
 
165
- msg = "given value '#{value}' specified for option '#{argument_spec.name}' must be a non-positive integer"
161
+ if v > 0
166
162
 
167
- raise IntegerOutOfRangeException, msg
168
- end
169
- when :non_negative
163
+ msg = "given value '#{value}' specified for option '#{argument_spec.name}' must be a non-positive integer"
170
164
 
171
- if v < 0
165
+ raise IntegerOutOfRangeException, msg
166
+ end
167
+ when :non_negative
172
168
 
173
- msg = "given value '#{value}' specified for option '#{argument_spec.name}' must be a non-negative integer"
169
+ if v < 0
174
170
 
175
- raise IntegerOutOfRangeException, msg
176
- end
177
- when Range
171
+ msg = "given value '#{value}' specified for option '#{argument_spec.name}' must be a non-negative integer"
178
172
 
179
- unless range.include?
173
+ raise IntegerOutOfRangeException, msg
174
+ end
175
+ when Range
180
176
 
181
- msg = "given value '#{value}' specified for option '#{argument_spec.name}' does not fall within the required range"
177
+ unless range.include?
182
178
 
183
- raise IntegerOutOfRangeException, msg
184
- end
185
- else
179
+ msg = "given value '#{value}' specified for option '#{argument_spec.name}' does not fall within the required range"
186
180
 
187
- ;
188
- end
189
- end
181
+ raise IntegerOutOfRangeException, msg
182
+ end
183
+ else
190
184
 
191
- v
185
+ ;
192
186
  end
193
- end # module Internal_
194
-
195
- def value_from_Proc(constraint, value, arg, given_index, given_name, argument_spec, extras)
187
+ end
196
188
 
197
- value
189
+ v
198
190
  end
191
+ end # module Internal_
199
192
 
200
- def value_from_Hash(constraint, value, arg, given_index, given_name, argument_spec, extras)
193
+ def value_from_Proc(constraint, value, arg, given_index, given_name, argument_spec, extras)
201
194
 
202
- # Check if type is specified; if not, String is assumed
195
+ value
196
+ end
203
197
 
204
- type = constraint[:type]
198
+ def value_from_Hash(constraint, value, arg, given_index, given_name, argument_spec, extras)
205
199
 
200
+ # Check if type is specified; if not, String is assumed
206
201
 
207
- if Internal_.is_integer?(type)
202
+ type = constraint[:type]
208
203
 
209
- return Internal_.obtain_integer(value, constraint, argument_spec)
210
- end
211
204
 
205
+ if Internal_.is_integer?(type)
212
206
 
213
- value
207
+ return Internal_.obtain_integer(value, constraint, argument_spec)
214
208
  end
209
+
210
+
211
+ value
212
+ end
215
213
  end # module ValueParser
216
214
 
217
215
  end # module util
data/lib/clasp/version.rb CHANGED
@@ -1,17 +1,17 @@
1
1
 
2
2
  # ######################################################################## #
3
- # File: clasp/version.rb
3
+ # File: clasp/version.rb
4
4
  #
5
- # Purpose: Version for CLASP.Ruby library
5
+ # Purpose: Version for CLASP.Ruby library
6
6
  #
7
- # Created: 16th November 2014
8
- # Updated: 20th January 2024
7
+ # Created: 16th November 2014
8
+ # Updated: 6th March 2025
9
9
  #
10
- # Home: http://github.com/synesissoftware/CLASP.Ruby
10
+ # Home: http://github.com/synesissoftware/CLASP.Ruby
11
11
  #
12
- # Author: Matthew Wilson
12
+ # Author: Matthew Wilson
13
13
  #
14
- # Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
14
+ # Copyright (c) 2019-2025, Matthew Wilson and Synesis Information Systems
15
15
  # Copyright (c) 2014-2019, Matthew Wilson and Synesis Software
16
16
  # All rights reserved.
17
17
  #
@@ -52,18 +52,18 @@
52
52
  module CLASP
53
53
 
54
54
  # Current version of the CLASP.Ruby library
55
- VERSION = '0.23.0.2'
55
+ VERSION = '0.23.1'
56
56
 
57
57
  private
58
58
  # @!visibility private
59
- VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
59
+ VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
60
60
  public
61
61
  # Major version of the CLASP.Ruby library
62
- VERSION_MAJOR = VERSION_PARTS_[0] # :nodoc:
62
+ VERSION_MAJOR = VERSION_PARTS_[0] # :nodoc:
63
63
  # Minor version of the CLASP.Ruby library
64
- VERSION_MINOR = VERSION_PARTS_[1] # :nodoc:
64
+ VERSION_MINOR = VERSION_PARTS_[1] # :nodoc:
65
65
  # Revision version of the CLASP.Ruby library
66
- VERSION_REVISION = VERSION_PARTS_[2] # :nodoc:
66
+ VERSION_REVISION = VERSION_PARTS_[2] # :nodoc:
67
67
 
68
68
  end # module CLASP
69
69
 
data/lib/clasp-ruby.rb CHANGED
@@ -1,17 +1,18 @@
1
1
 
2
2
  # ######################################################################## #
3
- # File: clasp-ruby.rb
3
+ # File: clasp-ruby.rb
4
4
  #
5
- # Purpose: Top-level source for CLASP.ruby library [alternate]
5
+ # Purpose: Top-level source for CLASP.ruby library [alternate]
6
6
  #
7
- # Created: 13th October 2014
8
- # Updated: 20th January 2024
7
+ # Created: 13th October 2014
8
+ # Updated: 6th March 2025
9
9
  #
10
- # Home: http://github.com/synesissoftware/CLASP.Ruby
10
+ # Home: http://github.com/synesissoftware/CLASP.Ruby
11
11
  #
12
- # Author: Matthew Wilson
12
+ # Author: Matthew Wilson
13
13
  #
14
- # Copyright (c) 2014-2024, Matthew Wilson and Synesis Software
14
+ # Copyright (c) 2019-2025, Matthew Wilson and Synesis Information Systems
15
+ # Copyright (c) 2014-2019, Matthew Wilson and Synesis Software
15
16
  # All rights reserved.
16
17
  #
17
18
  # Redistribution and use in source and binary forms, with or without
data/lib/clasp.rb CHANGED
@@ -1,17 +1,18 @@
1
1
 
2
2
  # ######################################################################## #
3
- # File: clasp.rb
3
+ # File: clasp.rb
4
4
  #
5
- # Purpose: Top-level source for CLASP.ruby library
5
+ # Purpose: Top-level source for CLASP.ruby library
6
6
  #
7
- # Created: 13th October 2014
8
- # Updated: 20th January 2024
7
+ # Created: 13th October 2014
8
+ # Updated: 6th March 2025
9
9
  #
10
- # Home: http://github.com/synesissoftware/CLASP.Ruby
10
+ # Home: http://github.com/synesissoftware/CLASP.Ruby
11
11
  #
12
- # Author: Matthew Wilson
12
+ # Author: Matthew Wilson
13
13
  #
14
- # Copyright (c) 2014-2024, Matthew Wilson and Synesis Software
14
+ # Copyright (c) 2019-2025, Matthew Wilson and Synesis Information Systems
15
+ # Copyright (c) 2014-2019, Matthew Wilson and Synesis Software
15
16
  # All rights reserved.
16
17
  #
17
18
  # Redistribution and use in source and binary forms, with or without
@@ -6,10 +6,10 @@ require 'clasp'
6
6
 
7
7
  Specifications = [
8
8
 
9
- CLASP.Flag('--help', help: 'shows this help and quits'),
10
- CLASP.Flag('--version', alias: '-v', help: 'shows this version and quits'),
9
+ CLASP.Flag('--help', help: 'shows this help and quits'),
10
+ CLASP.Flag('--version', alias: '-v', help: 'shows this version and quits'),
11
11
 
12
- CLASP.Option('--verbosity', aliases: %w{ -V --verbose }),
12
+ CLASP.Option('--verbosity', aliases: %w{ -V --verbose }),
13
13
  ]
14
14
 
15
15
  Args = CLASP::Arguments.new(ARGV, Specifications)
@@ -18,20 +18,20 @@ puts
18
18
  puts "flags #{Args.flags.size}:"
19
19
  Args.flags.each do |flag|
20
20
 
21
- puts "\t#{flag}\t[#{flag.given_index}, #{flag.given_name}, #{flag.argument_specification}, #{flag.given_hyphens}, #{flag.given_label}, #{flag.name}]"
21
+ puts "\t#{flag}\t[#{flag.given_index}, #{flag.given_name}, #{flag.argument_specification}, #{flag.given_hyphens}, #{flag.given_label}, #{flag.name}]"
22
22
  end
23
23
 
24
24
  puts
25
25
  puts "options #{Args.options.size}:"
26
26
  Args.options.each do |option|
27
27
 
28
- puts "\t#{option}\t[#{option.given_index}, #{option.given_name}, #{option.argument_specification}, #{option.given_hyphens}, #{option.given_label}, #{option.name}, #{option.value}]"
28
+ puts "\t#{option}\t[#{option.given_index}, #{option.given_name}, #{option.argument_specification}, #{option.given_hyphens}, #{option.given_label}, #{option.name}, #{option.value}]"
29
29
  end
30
30
 
31
31
  puts
32
32
  puts "values #{Args.values.size}:"
33
33
  Args.values.each do |value|
34
34
 
35
- puts "\t#{value}"
35
+ puts "\t#{value}"
36
36
  end
37
37
 
@@ -6,34 +6,34 @@ require 'clasp'
6
6
 
7
7
  Specifications = [
8
8
 
9
- CLASP.Flag('--help', help: 'shows this help and quits'),
10
- CLASP.Flag('--version', alias: '-v', help: 'shows this version and quits'),
11
- CLASP.Alias('--version', aliases: [ '-ver', '-V' ]),
9
+ CLASP.Flag('--help', help: 'shows this help and quits'),
10
+ CLASP.Flag('--version', alias: '-v', help: 'shows this version and quits'),
11
+ CLASP.Alias('--version', aliases: [ '-ver', '-V' ]),
12
12
 
13
- CLASP.Option('--directory', alias: '-d', help: 'a directory within which to process'),
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"),
13
+ CLASP.Option('--directory', alias: '-d', help: 'a directory within which to process'),
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
- 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'),
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'),
18
18
  ]
19
19
 
20
- Arguments = CLASP::Arguments.new(ARGV, Specifications)
21
- Flags = Arguments.flags
22
- Options = Arguments.options
23
- Values = Arguments.values
20
+ Arguments = CLASP::Arguments.new(ARGV, Specifications)
21
+ Flags = Arguments.flags
22
+ Options = Arguments.options
23
+ Values = Arguments.values
24
24
 
25
25
  if Flags.include? '--help'
26
26
 
27
- CLASP.show_usage Specifications, exit: 0
27
+ CLASP.show_usage Specifications, exit: 0
28
28
  end
29
29
 
30
30
  Flags.each do |f|
31
31
 
32
- puts f.inspect
32
+ puts f.inspect
33
33
  end
34
34
 
35
35
  Options.each do |o|
36
36
 
37
- puts o.inspect
37
+ puts o.inspect
38
38
  end
39
39
 
@@ -6,12 +6,12 @@ require 'clasp'
6
6
 
7
7
  Specifications = [
8
8
 
9
- CLASP.Flag('--version', alias: '-v', help: 'shows the program version and quits'),
9
+ CLASP.Flag('--version', alias: '-v', help: 'shows the program version and quits'),
10
10
 
11
- CLASP.Option('--verbosity', help: 'the verbosity', values: [ 'silent', 'quiet', 'succinct', 'chatty', 'verbose' ]),
12
- CLASP.Option('--length', alias: '-l', help: 'specifies the length'),
13
- CLASP.Flag('--verbosity=succinct', aliases: [ '--succinct', '-s' ]),
14
- CLASP.Flag('--verbosity=verbose', alias: '--verbose'),
11
+ CLASP.Option('--verbosity', help: 'the verbosity', values: [ 'silent', 'quiet', 'succinct', 'chatty', 'verbose' ]),
12
+ CLASP.Option('--length', alias: '-l', help: 'specifies the length'),
13
+ CLASP.Flag('--verbosity=succinct', aliases: [ '--succinct', '-s' ]),
14
+ CLASP.Flag('--verbosity=verbose', alias: '--verbose'),
15
15
  ]
16
16
 
17
17
  Arguments = CLASP::Arguments.new(ARGV, Specifications)
@@ -6,12 +6,12 @@ require 'clasp'
6
6
 
7
7
  Specifications = [
8
8
 
9
- CLASP.Flag('--version', alias: '-v', help: 'shows the program version and quits'),
9
+ CLASP.Flag('--version', alias: '-v', help: 'shows the program version and quits'),
10
10
 
11
- CLASP.Option('--verbosity', help: 'the verbosity', values: [ 'silent', 'quiet', 'succinct', 'chatty', 'verbose' ]),
12
- CLASP.Option('--length', alias: '-l', help: 'specifies the length'),
13
- CLASP.Flag('--verbosity=succinct', aliases: [ '--succinct', '-s' ]),
14
- CLASP.Flag('--verbosity=verbose', aliases: [ '--verbose', '-v' ]),
11
+ CLASP.Option('--verbosity', help: 'the verbosity', values: [ 'silent', 'quiet', 'succinct', 'chatty', 'verbose' ]),
12
+ CLASP.Option('--length', alias: '-l', help: 'specifies the length'),
13
+ CLASP.Flag('--verbosity=succinct', aliases: [ '--succinct', '-s' ]),
14
+ CLASP.Flag('--verbosity=verbose', aliases: [ '--verbose', '-v' ]),
15
15
  ]
16
16
 
17
17
  Arguments = CLASP::Arguments.new(ARGV, Specifications)