shellopts 2.1.3 → 2.2.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
  SHA256:
3
- metadata.gz: e5a0965923d18a30dfcf2423a94e836ed70175c855c0cfe053ad6bcb4477f86e
4
- data.tar.gz: 577bbd74ae1d865294fe2959234dcf661011a8f4feaa9f267206eff41160dc5a
3
+ metadata.gz: fccea78ec2de7eab1323d529055ce1875ca9ac6b966a40dcadad83e4e68594f5
4
+ data.tar.gz: 6326b0754e0c24164bdd09f0bfbe36248aa2c7b493c1b4fa5db2c65046de7c3f
5
5
  SHA512:
6
- metadata.gz: a742f7189ce47ea95f0477f4a450345d95b66a871ac6f123a5c9107f3e06b2d4cbeb573fa75e7d6fc2b1947b4fac7b5f846c1ba39873faa3e5eeb8f54e8834e4
7
- data.tar.gz: bf176d5794767dc0aadd732763da86850b028cc065e5dda72d404b93355f77577ad0c7e9413d753881ca50685a137f4108f35df4c1dce38555d433888ced1f43
6
+ metadata.gz: 400ac812870c7b51321cc360e547a43e0b3976c1e6d7b2358cbc2abd3fb0491837bb230bf386a899a08967d0ed5201c8e532bb49fb12ef7aa95050c9af8b8fd6
7
+ data.tar.gz: 115186fbd56935988bcdd1d7f37b00168e4432aa5fff889933b79b7ddbea0be5ab95f0a970c635e04c713aa4664e8333f67c43bc26ccc3e4916f419afb67d65c
@@ -26,11 +26,13 @@ module ShellOpts
26
26
  # #extract raise a ShellOpts::Error exception if there's is not enough
27
27
  # elements in the array to satisfy the request
28
28
  #
29
+ # TODO: Better handling of ranges. Allow: 2..-1, -2..-4, etc.
29
30
  def extract(count_or_range, message = nil)
30
31
  case count_or_range
31
32
  when Range
32
33
  range = count_or_range
33
34
  range.min <= self.size or inoa(message)
35
+ return self.to_a if range.end.nil?
34
36
  n_extract = [self.size, range.max].min
35
37
  n_extend = range.max > self.size ? range.max - self.size : 0
36
38
  r = self.shift(n_extract) + Array.new(n_extend)
@@ -52,10 +54,12 @@ module ShellOpts
52
54
  # #expect raise a ShellOpts::Error exception if the array is not emptied
53
55
  # by the operation
54
56
  #
57
+ # TODO: Better handling of ranges. Allow: 2..-1, -2..-4, etc.
55
58
  def expect(count_or_range, message = nil)
56
59
  case count_or_range
57
60
  when Range
58
61
  count_or_range === self.size or inoa(message)
62
+ return self.to_a if count_or_range.end.nil?
59
63
  when Integer
60
64
  count_or_range >= 0 or inoa(message)
61
65
  count_or_range.abs == self.size or inoa(message)
@@ -1,3 +1,3 @@
1
1
  module ShellOpts
2
- VERSION = "2.1.3"
2
+ VERSION = "2.2.0"
3
3
  end
data/lib/shellopts.rb CHANGED
@@ -4,28 +4,28 @@ require 'indented_io'
4
4
  require 'constrain'
5
5
  include Constrain
6
6
 
7
- require 'ext/array.rb'
8
- require 'ext/follow.rb'
9
- require 'ext/forward_to.rb'
10
- require 'ext/lcs.rb'
7
+ require_relative 'shellopts/ext/array.rb'
8
+ require_relative 'shellopts/ext/follow.rb'
9
+ require_relative 'shellopts/ext/forward_to.rb' # Import into standard forward_to
10
+ require_relative 'shellopts/ext/lcs.rb'
11
11
  include ForwardTo
12
12
 
13
- require 'shellopts/version.rb'
14
-
15
- require 'shellopts/stack.rb'
16
- require 'shellopts/token.rb'
17
- require 'shellopts/grammar.rb'
18
- require 'shellopts/program.rb'
19
- require 'shellopts/args.rb'
20
- require 'shellopts/lexer.rb'
21
- require 'shellopts/argument_type.rb'
22
- require 'shellopts/parser.rb'
23
- require 'shellopts/analyzer.rb'
24
- require 'shellopts/interpreter.rb'
25
- require 'shellopts/ansi.rb'
26
- require 'shellopts/renderer.rb'
27
- require 'shellopts/formatter.rb'
28
- require 'shellopts/dump.rb'
13
+ require_relative 'shellopts/version.rb'
14
+
15
+ require_relative 'shellopts/stack.rb'
16
+ require_relative 'shellopts/token.rb'
17
+ require_relative 'shellopts/grammar.rb'
18
+ require_relative 'shellopts/program.rb'
19
+ require_relative 'shellopts/args.rb'
20
+ require_relative 'shellopts/lexer.rb'
21
+ require_relative 'shellopts/argument_type.rb'
22
+ require_relative 'shellopts/parser.rb'
23
+ require_relative 'shellopts/analyzer.rb'
24
+ require_relative 'shellopts/interpreter.rb'
25
+ require_relative 'shellopts/ansi.rb'
26
+ require_relative 'shellopts/renderer.rb'
27
+ require_relative 'shellopts/formatter.rb'
28
+ require_relative 'shellopts/dump.rb'
29
29
 
30
30
  # TODO: Describe exception handling
31
31
  #
@@ -212,15 +212,15 @@ module ShellOpts
212
212
  @argv = argv.dup
213
213
  @program, @args = Interpreter.interpret(grammar, argv, float: float, exception: exception)
214
214
 
215
- # Process standard options (that may have been renamed)
216
- if @program.__send__(:"#{@help_option.ident}?")
215
+ # Process standard options that may have been renamed or be deactivated
216
+ if @help && @program.__send__(:"#{@help_option.ident}?")
217
217
  if @program[:help].name =~ /^--/
218
218
  ShellOpts.help
219
219
  else
220
220
  ShellOpts.brief
221
221
  end
222
222
  exit
223
- elsif @program.__send__(:"#{@version_option.ident}?")
223
+ elsif @version && @program.__send__(:"#{@version_option.ident}?")
224
224
  puts version_number
225
225
  exit
226
226
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shellopts
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claus Rasmussen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-02 00:00:00.000000000 Z
11
+ date: 2024-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: forward_to
@@ -133,16 +133,16 @@ files:
133
133
  - doc/stylesheet.css
134
134
  - doc/syntax.rb
135
135
  - doc/syntax.txt
136
- - lib/ext/array.rb
137
- - lib/ext/follow.rb
138
- - lib/ext/forward_to.rb
139
- - lib/ext/lcs.rb
140
136
  - lib/shellopts.rb
141
137
  - lib/shellopts/analyzer.rb
142
138
  - lib/shellopts/ansi.rb
143
139
  - lib/shellopts/args.rb
144
140
  - lib/shellopts/argument_type.rb
145
141
  - lib/shellopts/dump.rb
142
+ - lib/shellopts/ext/array.rb
143
+ - lib/shellopts/ext/follow.rb
144
+ - lib/shellopts/ext/forward_to.rb
145
+ - lib/shellopts/ext/lcs.rb
146
146
  - lib/shellopts/formatter.rb
147
147
  - lib/shellopts/grammar.rb
148
148
  - lib/shellopts/interpreter.rb
@@ -173,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
173
  - !ruby/object:Gem::Version
174
174
  version: '0'
175
175
  requirements: []
176
- rubygems_version: 3.3.7
176
+ rubygems_version: 3.3.18
177
177
  signing_key:
178
178
  specification_version: 4
179
179
  summary: Parse command line options and arguments
File without changes
File without changes
File without changes
File without changes