12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- """
- 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
|