min: false for no shorts. noshortaliases only for Sub-commands
This commit is contained in:
parent
2c654f2941
commit
7be062c1db
|
@ -51,11 +51,16 @@ class DenCli
|
|||
# `g(:abc)` => `["a", "ab", "abc"]`
|
||||
# `g(:abcdef, 4)` => `["abcd", "abcde", "abcdef"]`
|
||||
def gen_aliases cmd, min = nil
|
||||
r = ((min||1)-1).upto cmd.length-1
|
||||
case min
|
||||
when false then min = cmd.length
|
||||
when nil then min = 1
|
||||
end
|
||||
r = ([min, 1].max - 1).upto cmd.length-2
|
||||
if block_given?
|
||||
r.each {|i| yield cmd[0..i] }
|
||||
yield cmd
|
||||
else
|
||||
r.map {|i| cmd[0..i] }
|
||||
r.map {|i| cmd[0..i] } + [cmd]
|
||||
end
|
||||
end
|
||||
alias g gen_aliases
|
||||
|
|
|
@ -4,9 +4,9 @@ require_relative '../dencli'
|
|||
class DenCli::CMD
|
||||
attr_reader :parent, :name, :description, :exe, :completion, :options
|
||||
|
||||
def initialize parent, name, description, exe, noshortaliases: nil
|
||||
def initialize parent, name, description, exe
|
||||
raise "Proc expected, instead of: #{exe.inspect}" unless Proc === exe
|
||||
@parent, @name, @description, @exe, @noshortaliases = parent, name, description, lambda( &exe), noshortaliases
|
||||
@parent, @name, @description, @exe = parent, name, description, lambda( &exe)
|
||||
@parameters = @exe.parameters
|
||||
@arguments_required = @exe.parameters.select {|e| :req == e[0] }.map {|e| e[1] }
|
||||
@arguments_additional = @exe.parameters.select {|e| :opt == e[0] }.map {|e| e[1] }
|
||||
|
|
|
@ -140,8 +140,8 @@ class DenCli::Sub
|
|||
block_given? ? yield( r) : r
|
||||
end
|
||||
|
||||
def cmd name, description, min: nil, aliases: nil, noshortaliases: nil, &exe
|
||||
_add name, min, DenCli::CMD.new( self, name, description, exe, noshortaliases: noshortaliases), aliases
|
||||
def cmd name, description, min: nil, aliases: nil, &exe
|
||||
_add name, min, DenCli::CMD.new( self, name, description, exe), aliases
|
||||
end
|
||||
|
||||
def complete *pre, str
|
||||
|
|
Loading…
Reference in a new issue