mirror of
https://github.com/evennia/evennia.git
synced 2026-03-17 05:16:31 +01:00
Fixed an issue with exit commands not using arg_regex ending correctly (it turns out you need to include this in the ExitCommand creation call or the metaclass will not pick it up and precompile the regex). Resolves Issue 397.
This commit is contained in:
parent
7f0d0dd0f8
commit
149b06a6a4
3 changed files with 8 additions and 7 deletions
|
|
@ -52,8 +52,8 @@ def cmdparser(raw_string, cmdset, caller, match_index=None):
|
|||
try:
|
||||
matches.extend([create_match(cmdname, raw_string, cmd)
|
||||
for cmdname in [cmd.key] + cmd.aliases
|
||||
if cmdname and l_raw_string.startswith(cmdname.lower())
|
||||
and (not cmd.arg_regex or
|
||||
if cmdname and l_raw_string.startswith(cmdname.lower())
|
||||
and (not cmd.arg_regex or
|
||||
cmd.arg_regex.match(l_raw_string[len(cmdname):]))])
|
||||
except Exception:
|
||||
log_trace("cmdhandler error. raw_input:%s" % raw_string)
|
||||
|
|
|
|||
|
|
@ -125,7 +125,9 @@ class ChannelHandler(object):
|
|||
cmd = ChannelCommand(key=channel.key.strip().lower(),
|
||||
aliases=channel.aliases.all(),
|
||||
locks="cmd:all();%s" % channel.locks,
|
||||
obj=channel)
|
||||
help_category="Channel names",
|
||||
obj=channel,
|
||||
is_channel=True)
|
||||
cmd.__doc__= self._format_help(channel)
|
||||
self.cached_channel_cmds.append(cmd)
|
||||
self.cached_cmdsets = {}
|
||||
|
|
|
|||
|
|
@ -888,10 +888,7 @@ class Exit(Object):
|
|||
This is a command that simply cause the caller
|
||||
to traverse the object it is attached to.
|
||||
"""
|
||||
locks = "cmd:all()" # should always be set to this.
|
||||
obj = None
|
||||
arg_regex=r"\s.*?|$"
|
||||
is_exit = True # this helps cmdhandler disable exits in cmdsets with no_exits=True.
|
||||
|
||||
def func(self):
|
||||
"Default exit traverse if no syscommand is defined."
|
||||
|
|
@ -908,12 +905,14 @@ class Exit(Object):
|
|||
# No shorthand error message. Call hook.
|
||||
self.obj.at_failed_traverse(self.caller)
|
||||
|
||||
# create an exit command.
|
||||
# create an exit command. We give the properties here, to always trigger metaclass preparations
|
||||
cmd = ExitCommand(key=exidbobj.db_key.strip().lower(),
|
||||
aliases=exidbobj.aliases.all(),
|
||||
locks=str(exidbobj.locks),
|
||||
auto_help=False,
|
||||
destination=exidbobj.db_destination,
|
||||
arg_regex=r"$",
|
||||
is_exit=True,
|
||||
obj=exidbobj)
|
||||
# create a cmdset
|
||||
exit_cmdset = cmdset.CmdSet(None)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue