tabry 0.2.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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