From 69c5f33c38f56caf4b93fc4ca3c983b63b61bed5 Mon Sep 17 00:00:00 2001 From: Vincent Le Goff Date: Sun, 2 Jul 2017 16:46:33 -0700 Subject: [PATCH] Allow to change suggestion_cutoff and suggestion_maxnum in help --- evennia/commands/default/help.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/evennia/commands/default/help.py b/evennia/commands/default/help.py index 4590ab74c6..fce601e90a 100644 --- a/evennia/commands/default/help.py +++ b/evennia/commands/default/help.py @@ -49,6 +49,12 @@ class CmdHelp(Command): # 'help_more' flag to False. 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): """ 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 caller = self.caller - suggestion_cutoff = 0.6 - suggestion_maxnum = 5 + suggestion_cutoff = self.suggestion_cutoff + suggestion_maxnum = self.suggestion_maxnum if not query: query = "all" @@ -211,12 +217,14 @@ class CmdHelp(Command): # Try to access a particular command # 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 - [vocabulary.extend(cmd.aliases) for cmd in all_cmds] - suggestions = [sugg for sugg in string_suggestions(query, set(vocabulary), cutoff=suggestion_cutoff, maxnum=suggestion_maxnum) - if sugg != query] - if not suggestions: - suggestions = [sugg for sugg in vocabulary if sugg != query and sugg.startswith(query)] + suggestions = None + if suggestion_maxnum > 0: + vocabulary = [cmd.key for cmd in all_cmds if cmd] + [topic.key for topic in all_topics] + all_categories + [vocabulary.extend(cmd.aliases) for cmd in all_cmds] + suggestions = [sugg for sugg in string_suggestions(query, set(vocabulary), cutoff=suggestion_cutoff, maxnum=suggestion_maxnum) + 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 match = [cmd for cmd in all_cmds if cmd == query]