diff options
| -rw-r--r-- | modules/line_handler.py | 9 | ||||
| -rw-r--r-- | src/utils/parse.py | 10 |
2 files changed, 11 insertions, 8 deletions
diff --git a/modules/line_handler.py b/modules/line_handler.py index c70f22fa..04ac39cb 100644 --- a/modules/line_handler.py +++ b/modules/line_handler.py @@ -247,14 +247,7 @@ class Module(ModuleManager.BaseModule): # the server is telling us about its capabilities! @utils.hook("raw.cap") def cap(self, event): - capabilities_list = event["args"][2].split(" ") - capabilities = {} - for capability in capabilities_list: - argument = None - if "=" in capability: - capability, argument = capability.split("=", 1) - capabilities[capability] = argument - + capabilities = utils.parse.keyvalue(event["args"][2]) subcommand = event["args"][1].lower() is_multiline = len(event["args"]) > 2 and event["args"][2] == "*" diff --git a/src/utils/parse.py b/src/utils/parse.py index 03a585c2..4fa3bb79 100644 --- a/src/utils/parse.py +++ b/src/utils/parse.py @@ -55,3 +55,13 @@ def docstring(s: str) -> Docstring: description += line return Docstring(description, items, var_items) +def keyvalue(s, delimiter: str=" ") -> typing.Dict[str, str]: + items = {} + pairs = s.split(delimiter) + for pair in pairs: + key, sep, value = pair.partition("=") + if sep: + items[key] = value + else: + items[key] = None + return items |
