shellopts 2.1.3 → 2.2.0

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
  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