From bd93e9644511730ea1008fe797e89009c5874295 Mon Sep 17 00:00:00 2001 From: "Vgr E. Barry" Date: Wed, 2 Sep 2015 18:37:49 -0400 Subject: [PATCH] Improve !fgame to allow an arbitrary number of spaces This also allows to be a bit more liberal with the punctuation --- src/settings.py | 20 ++++++++++++-------- src/wolfgame.py | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/settings.py b/src/settings.py index b94ac49..b3c1193 100644 --- a/src/settings.py +++ b/src/settings.py @@ -473,9 +473,12 @@ class GameMode: if not arg: return - pairs = arg.split(",") - for pair in pairs: - change = pair.lower().split(":") + arg = arg.replace("=", ":").replace(";", ",") + + pairs = [arg] + while pairs: + pair, *pairs = pairs[0].split(",", 1) + change = pair.lower().replace(":", " ").strip().rsplit(None, 1) if len(change) != 2: raise InvalidModeException("Invalid syntax for mode arguments. arg={0}".format(arg)) @@ -521,14 +524,15 @@ class ChangedRolesMode(GameMode): self.MAX_PLAYERS = 35 self.ROLE_GUIDE = ROLE_GUIDE.copy() self.ROLE_INDEX = (MIN_PLAYERS,) - pairs = arg.split(",") - if not pairs: - raise InvalidModeException("Invalid syntax for mode roles. arg={0}".format(arg)) + arg = arg.replace("=", ":").replace(";", ",") for role in self.ROLE_GUIDE.keys(): self.ROLE_GUIDE[role] = (0,) - for pair in pairs: - change = pair.split(":") + + pairs = [arg] + while pairs: + pair, *pairs = pairs[0].split(",", 1) + change = pair.replace(":", " ").strip().rsplit(None, 1) if len(change) != 2: raise InvalidModeException("Invalid syntax for mode roles. arg={0}".format(arg)) role, num = change diff --git a/src/wolfgame.py b/src/wolfgame.py index 70f9bad..b67af4a 100644 --- a/src/wolfgame.py +++ b/src/wolfgame.py @@ -8371,7 +8371,7 @@ if botconfig.DEBUG_MODE or botconfig.ALLOWED_NORMAL_MODE_COMMANDS: if rest: gamemode = rest.strip().lower() - parts = gamemode.split("=", 1) + parts = gamemode.replace("=", " ", 1).split(None, 1) if len(parts) > 1: gamemode, modeargs = parts else: