Make command ambiguity handler pluggable.
This commit is contained in:
parent
f116543e14
commit
a5887d23e2
4 changed files with 9 additions and 2 deletions
|
|
@ -42,7 +42,6 @@ from twisted.internet.defer import inlineCallbacks, returnValue
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from evennia.comms.channelhandler import CHANNELHANDLER
|
from evennia.comms.channelhandler import CHANNELHANDLER
|
||||||
from evennia.utils import logger, utils
|
from evennia.utils import logger, utils
|
||||||
from evennia.commands.cmdparser import at_multimatch_cmd
|
|
||||||
from evennia.utils.utils import string_suggestions, to_unicode
|
from evennia.utils.utils import string_suggestions, to_unicode
|
||||||
|
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
@ -71,6 +70,9 @@ CMD_CHANNEL = "__send_to_channel_command"
|
||||||
# (is expected to display the login screen)
|
# (is expected to display the login screen)
|
||||||
CMD_LOGINSTART = "__unloggedin_look_command"
|
CMD_LOGINSTART = "__unloggedin_look_command"
|
||||||
|
|
||||||
|
# Function for handling multiple command matches.
|
||||||
|
_AT_MULTIMATCH_CMD = utils.variable_from_module(*settings.SEARCH_AT_MULTIMATCH_CMD.rsplit('.', 1))
|
||||||
|
|
||||||
# Output strings
|
# Output strings
|
||||||
|
|
||||||
_ERROR_UNTRAPPED = "{traceback}\n" \
|
_ERROR_UNTRAPPED = "{traceback}\n" \
|
||||||
|
|
@ -486,7 +488,7 @@ def cmdhandler(called_by, raw_string, _testing=False, callertype="session", sess
|
||||||
syscmd.matches = matches
|
syscmd.matches = matches
|
||||||
else:
|
else:
|
||||||
# fall back to default error handling
|
# fall back to default error handling
|
||||||
sysarg = yield at_multimatch_cmd(caller, matches)
|
sysarg = yield _AT_MULTIMATCH_CMD(caller, matches)
|
||||||
raise ExecSystemCommand(syscmd, sysarg)
|
raise ExecSystemCommand(syscmd, sysarg)
|
||||||
|
|
||||||
if len(matches) == 1:
|
if len(matches) == 1:
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@ def cmdparser(raw_string, cmdset, caller, match_index=None):
|
||||||
#
|
#
|
||||||
# SEARCH_AT_RESULT
|
# SEARCH_AT_RESULT
|
||||||
# SEARCH_AT_MULTIMATCH_INPUT
|
# SEARCH_AT_MULTIMATCH_INPUT
|
||||||
|
# SEARCH_AT_MULTIMATCH_CMD
|
||||||
#
|
#
|
||||||
# The the replacing functions must have the same inputs and outputs as
|
# The the replacing functions must have the same inputs and outputs as
|
||||||
# those in this module.
|
# those in this module.
|
||||||
|
|
|
||||||
|
|
@ -611,6 +611,7 @@ def error_check_python_modules():
|
||||||
imp(settings.COMMAND_PARSER)
|
imp(settings.COMMAND_PARSER)
|
||||||
imp(settings.SEARCH_AT_RESULT)
|
imp(settings.SEARCH_AT_RESULT)
|
||||||
imp(settings.SEARCH_AT_MULTIMATCH_INPUT)
|
imp(settings.SEARCH_AT_MULTIMATCH_INPUT)
|
||||||
|
imp(settings.SEARCH_AT_MULTIMATCH_CMD)
|
||||||
imp(settings.CONNECTION_SCREEN_MODULE)
|
imp(settings.CONNECTION_SCREEN_MODULE)
|
||||||
#imp(settings.AT_INITIAL_SETUP_HOOK_MODULE, split=False)
|
#imp(settings.AT_INITIAL_SETUP_HOOK_MODULE, split=False)
|
||||||
for path in settings.LOCK_FUNC_MODULES:
|
for path in settings.LOCK_FUNC_MODULES:
|
||||||
|
|
|
||||||
|
|
@ -240,6 +240,9 @@ SEARCH_AT_RESULT = "evennia.commands.cmdparser.at_search_result"
|
||||||
# object matches (so you can separate between same-named
|
# object matches (so you can separate between same-named
|
||||||
# objects without using dbrefs).
|
# objects without using dbrefs).
|
||||||
SEARCH_AT_MULTIMATCH_INPUT = "evennia.commands.cmdparser.at_multimatch_input"
|
SEARCH_AT_MULTIMATCH_INPUT = "evennia.commands.cmdparser.at_multimatch_input"
|
||||||
|
# The parser used in order to separate multiple
|
||||||
|
# command matches (so you can separate between same-named commands)
|
||||||
|
SEARCH_AT_MULTIMATCH_CMD = "evennia.commands.cmdparser.at_multimatch_cmd"
|
||||||
# The module holding text strings for the connection screen.
|
# The module holding text strings for the connection screen.
|
||||||
# This module should contain one or more variables
|
# This module should contain one or more variables
|
||||||
# with strings defining the look of the screen.
|
# with strings defining the look of the screen.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue