Allow to change suggestion_cutoff and suggestion_maxnum in help

This commit is contained in:
Vincent Le Goff 2017-07-02 16:46:33 -07:00
parent dc859eae57
commit 69c5f33c38

View file

@ -49,6 +49,12 @@ class CmdHelp(Command):
# 'help_more' flag to False. # 'help_more' flag to False.
help_more = True help_more = True
# suggestion cutoff, between 0 and 1 (1 => perfect match)
suggestion_cutoff = 0.6
# number of suggestions (set to 0 to remove suggestions from help)
suggestion_maxnum = 5
def msg_help(self, text): def msg_help(self, text):
""" """
messages text to the caller, adding an extra oob argument to indicate messages text to the caller, adding an extra oob argument to indicate
@ -178,8 +184,8 @@ class CmdHelp(Command):
query, cmdset = self.args, self.cmdset query, cmdset = self.args, self.cmdset
caller = self.caller caller = self.caller
suggestion_cutoff = 0.6 suggestion_cutoff = self.suggestion_cutoff
suggestion_maxnum = 5 suggestion_maxnum = self.suggestion_maxnum
if not query: if not query:
query = "all" query = "all"
@ -211,12 +217,14 @@ class CmdHelp(Command):
# Try to access a particular command # Try to access a particular command
# build vocabulary of suggestions and rate them by string similarity. # build vocabulary of suggestions and rate them by string similarity.
vocabulary = [cmd.key for cmd in all_cmds if cmd] + [topic.key for topic in all_topics] + all_categories suggestions = None
[vocabulary.extend(cmd.aliases) for cmd in all_cmds] if suggestion_maxnum > 0:
suggestions = [sugg for sugg in string_suggestions(query, set(vocabulary), cutoff=suggestion_cutoff, maxnum=suggestion_maxnum) vocabulary = [cmd.key for cmd in all_cmds if cmd] + [topic.key for topic in all_topics] + all_categories
if sugg != query] [vocabulary.extend(cmd.aliases) for cmd in all_cmds]
if not suggestions: suggestions = [sugg for sugg in string_suggestions(query, set(vocabulary), cutoff=suggestion_cutoff, maxnum=suggestion_maxnum)
suggestions = [sugg for sugg in vocabulary if sugg != query and sugg.startswith(query)] if sugg != query]
if not suggestions:
suggestions = [sugg for sugg in vocabulary if sugg != query and sugg.startswith(query)]
# try an exact command auto-help match # try an exact command auto-help match
match = [cmd for cmd in all_cmds if cmd == query] match = [cmd for cmd in all_cmds if cmd == query]