class GGem::CLI::CommandSet
Public Class Methods
new(&unknown_cmd_block)
click to toggle source
# File lib/ggem/cli/commands.rb, line 361 def initialize(&unknown_cmd_block) @lookup = Hash.new{ |_h, k| unknown_cmd_block.call(k) } @names = [] @aliases = {} @summaries = {} end
Public Instance Methods
[](name)
click to toggle source
# File lib/ggem/cli/commands.rb, line 389 def [](name) @lookup[name] end
add(klass, name, *aliases)
click to toggle source
# File lib/ggem/cli/commands.rb, line 368 def add(klass, name, *aliases) begin cmd = klass.new rescue # don't add any commands you can't init else ([name] + aliases).each{ |n| @lookup[n] = cmd } @to_s = nil @names << name @aliases[name] = aliases.empty? ? "" : "(#{aliases.join(", ")})" @summaries[name] = cmd.summary.to_s.empty? ? "" : "# #{cmd.summary}" end end
remove(name)
click to toggle source
# File lib/ggem/cli/commands.rb, line 382 def remove(name) @lookup.delete(name) @names.delete(name) @aliases.delete(name) @to_s = nil end
size()
click to toggle source
# File lib/ggem/cli/commands.rb, line 393 def size @names.size end
to_s()
click to toggle source
# File lib/ggem/cli/commands.rb, line 397 def to_s max_name_size = @names.map(&:size).max || 0 max_alias_size = @aliases.values.map(&:size).max || 0 @to_s ||= @names.map{ |n| "#{n.ljust(max_name_size)} #{@aliases[n].ljust(max_alias_size)} "\ "#{@summaries[n]}" }.join("\n") end