tabry 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -317,6 +317,12 @@ const handlers = {
317
317
  createOpts(state, {type: 'shell', value: textFromString(value)});
318
318
  },
319
319
 
320
+ handleOptsMethodStatement(state, node) {
321
+ checkContext(state, node, ['arg', 'flag', 'option_include']);
322
+ const {value} = pick(node, {value: 'string'});
323
+ createOpts(state, {type: 'method', value: textFromString(value)});
324
+ },
325
+
320
326
  handleOptsFileStatement(state, node) {
321
327
  checkContext(state, node, ['arg', 'flag', 'option_include']);
322
328
  createOpts(state, {type: 'file'});
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tabry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Battaglia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-15 00:00:00.000000000 Z
11
+ date: 2023-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry-byebug
@@ -132,6 +132,7 @@ files:
132
132
  - lib/tabry/models/include_flag.rb
133
133
  - lib/tabry/models/include_option.rb
134
134
  - lib/tabry/models/include_sub.rb
135
+ - lib/tabry/models/method_option.rb
135
136
  - lib/tabry/models/option.rb
136
137
  - lib/tabry/models/option_base.rb
137
138
  - lib/tabry/models/option_includes.rb
@@ -140,9 +141,11 @@ files:
140
141
  - lib/tabry/models/sub.rb
141
142
  - lib/tabry/models/subs_list.rb
142
143
  - lib/tabry/options_finder.rb
144
+ - lib/tabry/replty/base.rb
145
+ - lib/tabry/replty/builder.rb
143
146
  - lib/tabry/result.rb
144
147
  - lib/tabry/runner.rb
145
- - lib/tabry/shell_splitter.rb
148
+ - lib/tabry/shell_tokenizer.rb
146
149
  - lib/tabry/shells/bash.rb
147
150
  - lib/tabry/shells/bash/wrapper.rb
148
151
  - lib/tabry/state.rb
@@ -173,6 +176,7 @@ files:
173
176
  - spec/fixtures/config_builder/underscoresdashes.rb
174
177
  - spec/fixtures/config_builder/underscoresdashes.tabry
175
178
  - spec/fixtures/config_builder/underscoresdashes.yml
179
+ - spec/fixtures/vehicles-expectations.json
176
180
  - spec/fixtures/vehicles.tabry
177
181
  - spec/fixtures/vehicles.yaml
178
182
  - spec/spec_helper.rb
@@ -194,7 +198,7 @@ files:
194
198
  - spec/tabry/options_finder_spec.rb
195
199
  - spec/tabry/result_spec.rb
196
200
  - spec/tabry/runner_spec.rb
197
- - spec/tabry/shell_splitter_spec.rb
201
+ - spec/tabry/shell_tokenizer_spec.rb
198
202
  - spec/tabry/shells/bash_spec.rb
199
203
  - spec/tabry/usage_generator_spec.rb
200
204
  - tabry.gemspec
@@ -253,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
253
257
  - !ruby/object:Gem::Version
254
258
  version: '0'
255
259
  requirements: []
256
- rubygems_version: 3.2.22
260
+ rubygems_version: 3.3.26
257
261
  signing_key:
258
262
  specification_version: 4
259
263
  summary: Tab completion and CLIs extraordinaire
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Use Shellwords.split() to split a command line + comp point (index of the
4
- # cursor in the command line) into the args up to the current token plus
5
- # current token
6
- module Tabry
7
- module ShellSplitter
8
- module_function
9
-
10
- COMP_POINT_SENTINEL = "\uFFFF"
11
-
12
- def split(cmd_line, comp_point)
13
- # Returns [cmd_name, args, last_arg]
14
- # cmd_name is the basename of the command run
15
- #
16
- # TODO: in weird scenarios this acts weird: namely, special shell operators like <(ls), $$((1 + 1))
17
- # Also it crashed on unbalanced quotes, like: foo "bar<TAB>
18
- # however, this will handle the common scenarios of escaping with quotes, single quotes, and backslashes
19
- # Split up args and put the argument that comp_point is in in the `last_arg` variable.
20
- # Just cutting off everything after comp_point might have worked, although
21
- # maybe we wanted the whole arg? Not sure this is the best.
22
- cmd_line = cmd_line.dup
23
- cmd_line[comp_point.to_i...comp_point.to_i] = COMP_POINT_SENTINEL
24
- cmd, *all_args = Shellwords.split(cmd_line)
25
- last_arg_index = all_args.index { |arg| arg.include?(COMP_POINT_SENTINEL) }
26
- args = all_args[0..last_arg_index]
27
- last_arg = args.pop.gsub! COMP_POINT_SENTINEL, ""
28
-
29
- cmd_name = cmd.gsub(%r{.*/}, "")
30
-
31
- [cmd_name, args, last_arg]
32
- end
33
- end
34
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../../lib/tabry/shell_splitter"
4
-
5
- describe Tabry::ShellSplitter do
6
- describe ".split" do
7
- it "returns the command basename, argument, and last argument" do
8
- str = "foo/bar abc def ghi"
9
- expect(described_class.split(str, 13)).to eq(["bar", ["abc"], "def"])
10
- end
11
-
12
- it "handles quotes and backslashes like a shell" do
13
- expect(described_class.split('"/foo bar/waz" a\'b \'c\\ d "ef g" "hi jk" lmn', 38)).to eq(
14
- [
15
- "waz",
16
- ["ab c d", "ef g"],
17
- "hi jk"
18
- ]
19
- )
20
- end
21
- end
22
- end