adding-help: commit created loader

This commit is contained in:
rkiel
2015-06-07 22:01:10 -04:00
parent 218fa5a29c
commit b49ee451a6
4 changed files with 62 additions and 29 deletions

View File

@@ -1,11 +1,28 @@
require_relative './loader'
module Feature module Feature
class Commander class Commander
COMMANDS = [
:branch,
:commit,
:help,
:end,
:rebase,
:merge,
:start,
:tab,
:trash
].sort
DEFAULT = :help
attr_reader :subcommand attr_reader :subcommand
def initialize (argv) def initialize (argv)
key = (argv[0] ? argv[0].to_sym : :branch) key = (argv[0] ? argv[0].to_sym : :branch)
@subcommand = Commander.create(key,argv) @subcommand = Feature::Loader.new(COMMANDS,DEFAULT).create(key,argv)
end end
def valid? def valid?
@@ -20,30 +37,6 @@ module Feature
subcommand.execute subcommand.execute
end end
def self.commands
[
:branch,
:commit,
:help,
:end,
:rebase,
:merge,
:start,
:tab,
:trash
].sort
end
def self.create key, argv
key = "help" unless Commander.commands.include? key
require_relative "./#{key}"
klass = Module.const_get "Feature::#{key.capitalize}"
klass.new(argv)
end
def self.create_all argv
commands.map { |x| create(x,argv) }
end
end end
end end

View File

@@ -1,8 +1,14 @@
require_relative './base' require_relative './base'
require_relative './commander'
require_relative './loader'
module Feature module Feature
class Help < Feature::Base class Help < Feature::Base
COMMANDS = Feature::Commander::COMMANDS
DEFAULT = Feature::Commander::DEFAULT
def valid? def valid?
true true
end end
@@ -13,7 +19,8 @@ module Feature
def execute def execute
puts puts
Feature::Commander.create_all(argv).each do |cmd| loader = Feature::Loader.new(COMMANDS,DEFAULT)
loader.create_all(argv).each do |cmd|
puts cmd.help puts cmd.help
end end
puts puts

28
lib/feature/loader.rb Normal file
View File

@@ -0,0 +1,28 @@
module Feature
class Loader
attr_reader :commands, :default
def initialize commands, default
@commands = commands
@default = default
end
def create key, argv
key = default unless commands.include? key
require_relative "./#{key}"
klass = Module.const_get "Feature::#{key.to_s.capitalize}"
klass.new(argv)
end
def create_all argv
commands.map { |x| create(x,argv) }
end
def search pattern
regexp = Regexp.new(pattern)
commands.select { |x| regexp.match(x.to_s) }
end
end
end

View File

@@ -1,8 +1,14 @@
require_relative './base' require_relative './base'
require_relative './commander'
require_relative './loader'
module Feature module Feature
class Tab < Feature::Base class Tab < Feature::Base
COMMANDS = Feature::Commander::COMMANDS
DEFAULT = Feature::Commander::DEFAULT
def valid? def valid?
[1,2].include? argv.size [1,2].include? argv.size
end end
@@ -18,9 +24,8 @@ module Feature
pattern = "^#{argv[1]}" pattern = "^#{argv[1]}"
end end
regexp = Regexp.new(pattern) loader = Feature::Loader.new(COMMANDS,DEFAULT)
puts loader.search(pattern).join("\n")
puts Feature::Commander.commands.select { |x| regexp.match(x.to_s) }.join("\n")
end end
end end