tabry 0.2.2 → 0.2.4

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/bin/tabry-fish +9 -0
  3. data/bin/tabry-generate-fish-complete +31 -0
  4. data/lib/tabry/cli/all_in_one.rb +27 -6
  5. data/lib/tabry/config_builder/arg_or_flag_builder.rb +5 -0
  6. data/lib/tabry/config_builder/top_level_builder.rb +3 -0
  7. data/lib/tabry/machine.rb +1 -1
  8. data/lib/tabry/models/const_option.rb +1 -1
  9. data/lib/tabry/models/flags_list.rb +6 -2
  10. data/lib/tabry/models/include_option.rb +2 -2
  11. data/lib/tabry/models/method_option.rb +14 -0
  12. data/lib/tabry/models/option.rb +5 -5
  13. data/lib/tabry/models/options_list.rb +2 -2
  14. data/lib/tabry/models/shell_option.rb +1 -1
  15. data/lib/tabry/models/subs_list.rb +13 -2
  16. data/lib/tabry/options_finder.rb +13 -8
  17. data/lib/tabry/replty/base.rb +23 -0
  18. data/lib/tabry/replty/builder.rb +100 -0
  19. data/lib/tabry/runner.rb +2 -2
  20. data/lib/tabry/shell_tokenizer.rb +50 -0
  21. data/lib/tabry/shells/bash/wrapper.rb +2 -2
  22. data/lib/tabry/shells/fish/wrapper.rb +51 -0
  23. data/lib/tabry/shells/fish.rb +82 -0
  24. data/lib/tabry/version.rb +3 -0
  25. data/sh/fish/README.md +2 -1
  26. data/sh/fish/tabry_fish.fish +17 -11
  27. data/spec/fixtures/config_builder/underscoresdashes.yml +1 -1
  28. data/spec/fixtures/vehicles-expectations.json +351 -0
  29. data/spec/tabry/cli/all_in_one_spec.rb +12 -0
  30. data/spec/tabry/machine_spec.rb +5 -82
  31. data/spec/tabry/shell_tokenizer_spec.rb +34 -0
  32. data/tabry.gemspec +2 -4
  33. data/treesitter/corpus/opts.txt +2 -0
  34. data/treesitter/grammar.js +7 -0
  35. data/treesitter/src/grammar.json +21 -0
  36. data/treesitter/src/node-types.json +23 -0
  37. data/treesitter/src/parser.c +959 -893
  38. data/treesitter/tabry-compile.js +6 -0
  39. metadata +16 -5
  40. data/lib/tabry/shell_splitter.rb +0 -34
  41. data/spec/tabry/shell_splitter_spec.rb +0 -22
data/tabry.gemspec CHANGED
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # TODO: these 2 lines are cargo cult
4
- lib = File.expand_path("lib", __dir__)
5
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require_relative './lib/tabry/version'
6
4
 
7
5
  Gem::Specification.new do |s|
8
6
  s.name = "tabry"
9
- s.version = "0.2.2"
7
+ s.version = Tabry::VERSION
10
8
  s.summary = "Tab completion and CLIs extraordinaire"
11
9
  s.authors = ["Evan Battaglia"]
12
10
  s.email = "battaglia.evan@gmail.com"
@@ -5,6 +5,7 @@ Options
5
5
  arg {
6
6
  opts const a
7
7
  opts shell "ls"
8
+ opts method foo
8
9
  opts file
9
10
  opts dir
10
11
  }
@@ -17,5 +18,6 @@ arg {
17
18
  (block
18
19
  (opts_const_statement (string))
19
20
  (opts_shell_statement (string))
21
+ (opts_method_statement (string))
20
22
  (opts_file_statement)
21
23
  (opts_dir_statement))))
@@ -27,6 +27,7 @@ module.exports = grammar({
27
27
  $._common_statement,
28
28
  $.opts_const_statement,
29
29
  $.opts_shell_statement,
30
+ $.opts_method_statement,
30
31
  $.opts_file_statement,
31
32
  $.opts_dir_statement,
32
33
  $.title_statement,
@@ -121,6 +122,12 @@ module.exports = grammar({
121
122
  'dir',
122
123
  ),
123
124
 
125
+ opts_method_statement: $ => seq(
126
+ 'opts',
127
+ 'method',
128
+ $.string
129
+ ),
130
+
124
131
  flagarg_statement: $ => seq(
125
132
  optional($.flag_modifier),
126
133
  'flagarg',
@@ -77,6 +77,10 @@
77
77
  "type": "SYMBOL",
78
78
  "name": "opts_shell_statement"
79
79
  },
80
+ {
81
+ "type": "SYMBOL",
82
+ "name": "opts_method_statement"
83
+ },
80
84
  {
81
85
  "type": "SYMBOL",
82
86
  "name": "opts_file_statement"
@@ -389,6 +393,23 @@
389
393
  }
390
394
  ]
391
395
  },
396
+ "opts_method_statement": {
397
+ "type": "SEQ",
398
+ "members": [
399
+ {
400
+ "type": "STRING",
401
+ "value": "opts"
402
+ },
403
+ {
404
+ "type": "STRING",
405
+ "value": "method"
406
+ },
407
+ {
408
+ "type": "SYMBOL",
409
+ "name": "string"
410
+ }
411
+ ]
412
+ },
392
413
  "flagarg_statement": {
393
414
  "type": "SEQ",
394
415
  "members": [
@@ -101,6 +101,10 @@
101
101
  "type": "opts_file_statement",
102
102
  "named": true
103
103
  },
104
+ {
105
+ "type": "opts_method_statement",
106
+ "named": true
107
+ },
104
108
  {
105
109
  "type": "opts_shell_statement",
106
110
  "named": true
@@ -332,6 +336,21 @@
332
336
  "named": true,
333
337
  "fields": {}
334
338
  },
339
+ {
340
+ "type": "opts_method_statement",
341
+ "named": true,
342
+ "fields": {},
343
+ "children": {
344
+ "multiple": false,
345
+ "required": true,
346
+ "types": [
347
+ {
348
+ "type": "string",
349
+ "named": true
350
+ }
351
+ ]
352
+ }
353
+ },
335
354
  {
336
355
  "type": "opts_shell_statement",
337
356
  "named": true,
@@ -524,6 +543,10 @@
524
543
  "type": "include",
525
544
  "named": false
526
545
  },
546
+ {
547
+ "type": "method",
548
+ "named": false
549
+ },
527
550
  {
528
551
  "type": "opts",
529
552
  "named": false