56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
|
"""
|
||
|
Changing the default command parser
|
||
|
|
||
|
The cmdparser is responsible for parsing the raw text inserted by the
|
||
|
user, identifying which command/commands match and return one or more
|
||
|
matching command objects. It is called by Evennia's cmdhandler and
|
||
|
must accept input and return results on the same form. The default
|
||
|
handler is very generic so you usually don't need to overload this
|
||
|
unless you have very exotic parsing needs; advanced parsing is best
|
||
|
done at the Command.parse level.
|
||
|
|
||
|
The default cmdparser understands the following command combinations
|
||
|
(where [] marks optional parts.)
|
||
|
|
||
|
[cmdname[ cmdname2 cmdname3 ...] [the rest]
|
||
|
|
||
|
A command may consist of any number of space-separated words of any
|
||
|
length, and contain any character. It may also be empty.
|
||
|
|
||
|
The parser makes use of the cmdset to find command candidates. The
|
||
|
parser return a list of matches. Each match is a tuple with its first
|
||
|
three elements being the parsed cmdname (lower case), the remaining
|
||
|
arguments, and the matched cmdobject from the cmdset.
|
||
|
|
||
|
|
||
|
This module is not accessed by default. To tell Evennia to use it
|
||
|
instead of the default command parser, add the following line to
|
||
|
your settings file:
|
||
|
|
||
|
COMMAND_PARSER = "server.conf.cmdparser.cmdparser"
|
||
|
|
||
|
"""
|
||
|
|
||
|
|
||
|
def cmdparser(raw_string, cmdset, caller, match_index=None):
|
||
|
"""
|
||
|
This function is called by the cmdhandler once it has
|
||
|
gathered and merged all valid cmdsets valid for this particular parsing.
|
||
|
|
||
|
raw_string - the unparsed text entered by the caller.
|
||
|
cmdset - the merged, currently valid cmdset
|
||
|
caller - the caller triggering this parsing
|
||
|
match_index - an optional integer index to pick a given match in a
|
||
|
list of same-named command matches.
|
||
|
|
||
|
Returns:
|
||
|
list of tuples: [(cmdname, args, cmdobj, cmdlen, mratio), ...]
|
||
|
where cmdname is the matching command name and args is
|
||
|
everything not included in the cmdname. Cmdobj is the actual
|
||
|
command instance taken from the cmdset, cmdlen is the length
|
||
|
of the command name and the mratio is some quality value to
|
||
|
(possibly) separate multiple matches.
|
||
|
|
||
|
"""
|
||
|
# Your implementation here
|