From 59d5a0f77cccb64ceec8bc38cb3f026d479a361d Mon Sep 17 00:00:00 2001 From: rkiel Date: Sat, 6 Jun 2015 10:58:51 -0400 Subject: [PATCH] tab-completion: added support for tab completion --- lib/feature/commander.rb | 7 +++++++ lib/feature/tab.rb | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 lib/feature/tab.rb diff --git a/lib/feature/commander.rb b/lib/feature/commander.rb index 5d2d6f8..5ab5f4b 100644 --- a/lib/feature/commander.rb +++ b/lib/feature/commander.rb @@ -3,6 +3,7 @@ require_relative './end' require_relative './trash' require_relative './rebase' require_relative './merge_to' +require_relative './tab' require_relative './branch' module Feature @@ -17,6 +18,7 @@ module Feature when "trash" then Feature::Trash.new(argv) when "rebase" then Feature::Rebase.new(argv) when "merge" then Feature::MergeTo.new(argv) + when "tab" then Feature::Tab.new(argv) else Feature::Branch.new(argv) end end @@ -32,6 +34,11 @@ module Feature def execute subcommand.execute end + + def self.tab_completion + [:start, :end, :trash, :rebase, :merge].map(&:to_s).sort + end + end end diff --git a/lib/feature/tab.rb b/lib/feature/tab.rb new file mode 100644 index 0000000..30d0a96 --- /dev/null +++ b/lib/feature/tab.rb @@ -0,0 +1,32 @@ +require_relative './base' + +module Feature + + class Tab < Feature::Base + def valid? + argv.size > 0 + end + + def help + puts + puts "USAGE: feature tab [pattern]" + puts + exit + end + + def execute + if argv.size == 1 + pattern = '.+' + else + pattern = "^#{argv[1]}" + end + + regexp = Regexp.new(pattern) + cmds = Feature::Commander.tab_completion + cmds = cmds.select { |x| regexp.match(x) } + + puts cmds.join("\n") + end + end + +end