From acadcfa5e7c22b5767e2ae4541829984b37b416a Mon Sep 17 00:00:00 2001 From: troido Date: Fri, 18 Jan 2019 13:08:05 +0100 Subject: use loaders for keybindings and charmaps which allow them to import templates --- asciifarm/client/loaders.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 asciifarm/client/loaders.py (limited to 'asciifarm/client/loaders.py') diff --git a/asciifarm/client/loaders.py b/asciifarm/client/loaders.py new file mode 100644 index 0000000..e7dac38 --- /dev/null +++ b/asciifarm/client/loaders.py @@ -0,0 +1,44 @@ + +import os + +from .paths import keybindingsPath +import json + + +standardKeyFiles = { + "default": os.path.join(keybindingsPath, "keybindings.json"), + "azerty": os.path.join(keybindingsPath, "azerty.json") +} + +def loadKeybindings(name): + fname = None + if name in standardKeyFiles: + fname = standardKeyFiles[name]) + else: + fname = name + with open(fname) as f: + data = json.load(f) + bindings = {} + for template in data.get(templates, []): + if template.partition(os.sep)[0] in {".", ".."}: + template = os.path.relpath(template, fname) + bindings.update(loadKeybindings(template)) + bindings.update(data["actions"]) + return (bindings, data["help"]) + + +def loadCharmap(name): + fname = None + if name in standardKeyFiles: + fname = standardKeyFiles[name]) + else: + fname = name + with open(fname) as f: + data = json.load(f) + bindings = {} + for template in data.get(templates, []): + if template.partition(os.sep)[0] in {".", ".."}: + template = os.path.relpath(template, fname) + bindings.update(loadKeybindings(template)) + bindings.update(data["actions"]) + return (bindings, data["help"]) -- cgit