From d6eb3868ecf49cd365ac80bcd27aac93e371352a Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Sat, 24 Aug 2024 15:50:11 -0400 Subject: [PATCH] add Python code generation support --- .../library/manager/MochaLibraryManager.py | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/mocha-common/compilers/yaml2mcl/mocha/library/manager/MochaLibraryManager.py b/mocha-common/compilers/yaml2mcl/mocha/library/manager/MochaLibraryManager.py index 3a1e17d..24c826b 100644 --- a/mocha-common/compilers/yaml2mcl/mocha/library/manager/MochaLibraryManager.py +++ b/mocha-common/compilers/yaml2mcl/mocha/library/manager/MochaLibraryManager.py @@ -466,17 +466,36 @@ class MochaLibraryManager: # assign relationship `Class.has Instance` self.assign_relationship(classGid, Guid.parse('7EB41D3C2AE9488483A4E59441BCAEFB'), instGid) - def save_entities_to_file(self, filename : str): + def save_entities_to_file(self, filename : str, libraryFileName : str = ""): f = open(filename, "w") - print("public static class KnownInstances", file=f) - print("{", file=f) - for name in self.entityReferences: - if name.startswith("IDC_") or name.startswith("IDA_") or name.startswith("IDI_"): - shortname = name - if name.startswith("ID") and "_" in name: - shortname = name[name.index("ID") + 2:] + if filename.endswith(".cs"): + print("// Mocha entity definitions" + (" for " + libraryFileName if libraryFileName != "" else ""), file=f) + print("// Generated by yaml2mcl version 1.0", file=f) + print("", file=f) + print("public static class KnownInstances", file=f) + print("{", file=f) + for name in self.entityReferences: + if name.startswith("IDC_") or name.startswith("IDA_") or name.startswith("IDI_"): + shortname = name + if name.startswith("ID") and "_" in name: + shortname = name[name.index("ID") + 2:] - print("\tpublic static readonly Guid " + shortname + " = new Guid(\"" + self.entityReferences[name] + "\");", file=f) + print("\tpublic static readonly Guid " + shortname + " = new Guid(\"" + self.entityReferences[name] + "\");", file=f) + + print("}", file=f) + + elif filename.endswith(".py"): + print("# Mocha entity definitions" + (" for " + libraryFileName if libraryFileName != "" else ""), file=f) + print("# Generated by yaml2mcl version 1.0", file=f) + print("", file=f) + print("class KnownInstances:", file=f) + print("", file=f) + for name in self.entityReferences: + if name.startswith("IDC_") or name.startswith("IDA_") or name.startswith("IDI_"): + shortname = name + if name.startswith("ID") and "_" in name: + shortname = name[name.index("ID") + 2:] + + print("\t" + shortname + " = Guid.parse(\"" + self.entityReferences[name] + "\")", file=f) - print("}", file=f) f.close()