Keep GMCP case if outputfunc is capitalized. Resolve #2300.

This commit is contained in:
Griatch 2021-08-17 20:25:00 +02:00
parent fbb17585c1
commit f650533614
2 changed files with 16 additions and 6 deletions

View file

@ -82,6 +82,8 @@ Up requirements to Django 3.2+
obj (avoids mistakenly assigning an AccountDB-typeclass to a Character etc).
- Merged `script` and `scripts` commands into one, for both managing global- and
on-object Scripts. Moved `CmdScripts` and `CmdObjects` to `commands/default/building.py`.
- Keep GMCP function case if outputfunc starts with capital letter (so `cmd_name` -> `Cmd.Name`
but `Cmd_nAmE` -> `Cmd.nAmE`). This helps e.g Mudlet's legacy `Client_GUI` implementation)
### Evennia 0.9.5 (2019-2020)

View file

@ -230,12 +230,16 @@ class TelnetOOB:
be stripped on the Evennia side.
::
[cmd.name, [], {}] -> Cmd.Name
[cmd.name, [arg], {}] -> Cmd.Name arg
[cmd.name, [args],{}] -> Cmd.Name [args]
[cmd.name, [], {kwargs}] -> Cmd.Name {kwargs}
[cmd_name, [], {}] -> Cmd.Name
[cmd_name, [arg], {}] -> Cmd.Name arg
[cmd_name, [args],{}] -> Cmd.Name [args]
[cmd_name, [], {kwargs}] -> Cmd.Name {kwargs}
[cmdname, [args, {kwargs}] -> Core.Cmdname [[args],{kwargs}]
For more flexibility with certain clients, if `cmd_name` is capitalized,
Evennia will leave its current capitalization (So CMD_nAmE would be sent
as CMD.nAmE but cMD_Name would be Cmd.Name)
Notes:
There are also a few default mappings between evennia outputcmds and GMCP:
::
@ -251,9 +255,13 @@ class TelnetOOB:
if cmdname in EVENNIA_TO_GMCP:
gmcp_cmdname = EVENNIA_TO_GMCP[cmdname]
elif "_" in cmdname:
gmcp_cmdname = ".".join(word.capitalize() for word in cmdname.split("_"))
if cmdname.istitle():
# leave without capitalization
gmcp_cmdname = ".".join(word for word in cmdname.split("_"))
else:
gmcp_cmdname = ".".join(word.capitalize() for word in cmdname.split("_"))
else:
gmcp_cmdname = "Core.%s" % cmdname.capitalize()
gmcp_cmdname = "Core.%s" % (cmdname if cmdname.istitle() else cmdname.capitalize())
if not (args or kwargs):
gmcp_string = gmcp_cmdname