From 5468f91eb1a49eac0e5b8bf24eb2c951d5fbd333 Mon Sep 17 00:00:00 2001 From: tritao Date: Fri, 7 Feb 2025 20:14:52 +0000 Subject: [PATCH] Tools: Refactor existing XML generator for extra readability. --- src/Tools/generate.py | 19 ++++++------- .../generateBase/generateModel_Module.py | 4 +-- .../generateTemplates/templateCPPFile.py | 2 +- .../templateClassPyExport.py | 28 ++++++++++++------- src/Tools/generateTemplates/templateModule.py | 2 +- .../generateTemplates/templateModuleApp.py | 6 ++-- .../templateModuleAppFeature.py | 6 ++-- .../templateModuleAppMain.py | 2 +- 8 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/Tools/generate.py b/src/Tools/generate.py index fdfbf31d99..484d1ade7b 100644 --- a/src/Tools/generate.py +++ b/src/Tools/generate.py @@ -31,27 +31,27 @@ Version: # Globals -def generate(filename, path): +def generate(filename, outputPath): # load model GenerateModelInst = generateBase.generateModel_Module.parse(filename) if len(GenerateModelInst.Module) != 0: Module = generateTemplates.templateModule.TemplateModule() - Module.path = path + Module.outputDir = outputPath Module.module = GenerateModelInst.Module[0] Module.Generate() print("Done generating: " + GenerateModelInst.Module[0].Name) else: Export = generateTemplates.templateClassPyExport.TemplateClassPyExport() - Export.path = path + "/" - Export.dirname = os.path.dirname(filename) + "/" + Export.outputDir = outputPath + "/" + Export.inputDir = os.path.dirname(filename) + "/" Export.export = GenerateModelInst.PythonExport[0] Export.Generate() print("Done generating: " + GenerateModelInst.PythonExport[0].Name) def main(): - defaultPath = "" + outputPath = "" class generateOutput: def write(self, data): @@ -75,7 +75,7 @@ def main(): sys.stderr.write(Usage) sys.exit() if o in ("-o", "--outputPath"): - defaultPath = a + outputPath = a # running through the files if len(args) == 0: @@ -83,12 +83,11 @@ def main(): else: for i in args: filename = os.path.abspath(i) - if defaultPath == "": - head, tail = os.path.split(filename) - print(head, tail) + if outputPath == "": + head, _ = os.path.split(filename) generate(filename, head) else: - generate(filename, defaultPath) + generate(filename, outputPath) if __name__ == "__main__": diff --git a/src/Tools/generateBase/generateModel_Module.py b/src/Tools/generateBase/generateModel_Module.py index 9e126b68df..8dbc66eec2 100644 --- a/src/Tools/generateBase/generateModel_Module.py +++ b/src/Tools/generateBase/generateModel_Module.py @@ -3182,8 +3182,8 @@ def parse(inFileName): rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None - sys.stdout.write('\n') - rootObj.export(sys.stdout, 0, name_="GenerateModel") + # sys.stdout.write('\n') + # rootObj.export(sys.stdout, 0, name_="GenerateModel") return rootObj diff --git a/src/Tools/generateTemplates/templateCPPFile.py b/src/Tools/generateTemplates/templateCPPFile.py index f30e313bfd..1073dc996a 100644 --- a/src/Tools/generateTemplates/templateCPPFile.py +++ b/src/Tools/generateTemplates/templateCPPFile.py @@ -9,7 +9,7 @@ import generateBase.generateTools class TemplateCPPFile(template.ModelTemplate): def Generate(self): - generateBase.generateTools.ensureDir(self.path) + generateBase.generateTools.ensureDir(self.outputDir) print("Generate() App Dir") diff --git a/src/Tools/generateTemplates/templateClassPyExport.py b/src/Tools/generateTemplates/templateClassPyExport.py index ccd443ec19..655601635d 100644 --- a/src/Tools/generateTemplates/templateClassPyExport.py +++ b/src/Tools/generateTemplates/templateClassPyExport.py @@ -14,9 +14,9 @@ class TemplateClassPyExport(template.ModelTemplate): # self.ParentNamespace = "Base" # self.Namespace = "Base" encoding = sys.getfilesystemencoding() - path = self.path exportName = self.export.Name - dirname = self.dirname + inputDir = self.inputDir + outputDir = self.outputDir def escapeString(s, indent=4): """Escapes a string for use as literal in C++ code""" @@ -26,22 +26,30 @@ class TemplateClassPyExport(template.ModelTemplate): s = s.replace("\n", f'\\n"\n{" "*indent}"') return s - print("TemplateClassPyExport", path + exportName) + print("TemplateClassPyExport", outputDir + exportName) # Create the subdir it necessary - subpath = os.path.dirname(path + exportName) + subpath = os.path.dirname(outputDir + exportName) if not os.path.exists(subpath): os.makedirs(subpath) - # Imp.cpp must not exist, neither in path nor in dirname - if not os.path.exists(path + exportName + "Imp.cpp"): - if not os.path.exists(dirname + exportName + "Imp.cpp"): - file = open(path + exportName + "Imp.cpp", "wb") + # Imp.cpp must not exist, neither in outputDir nor in inputDir + outputImp = outputDir + exportName + "Imp.cpp" + if not os.path.exists(outputImp): + if not os.path.exists(inputDir + exportName + "Imp.cpp"): + file = open(outputImp, "wb") + print("TemplateClassPyExport", "TemplateImplement", file.name) generateBase.generateTools.replace(self.TemplateImplement, locals(), file) file.close() - with open(path + exportName + ".cpp", "wb") as file: + + outputCpp = outputDir + exportName + ".cpp" + with open(outputCpp, "wb") as file: + print("TemplateClassPyExport", "TemplateModule", file.name) generateBase.generateTools.replace(self.TemplateModule, locals(), file) - with open(path + exportName + ".h", "wb") as file: + + outputHeader = outputDir + exportName + ".h" + with open(outputHeader, "wb") as file: + print("TemplateClassPyExport", "TemplateHeader", file.name) generateBase.generateTools.replace(self.TemplateHeader, locals(), file) # file.write( generateBase.generateTools.replace(self.Template,locals())) diff --git a/src/Tools/generateTemplates/templateModule.py b/src/Tools/generateTemplates/templateModule.py index dc7fa7387c..ee14cc2da4 100644 --- a/src/Tools/generateTemplates/templateModule.py +++ b/src/Tools/generateTemplates/templateModule.py @@ -9,6 +9,6 @@ class TemplateModule(template.ModelTemplate): def Generate(self): print("generateBase.generateModel_Module.Generate()\n") App = templateModuleApp.TemplateModuleApp() - App.path = self.path + App.outputDir = self.outputDir App.module = self.module App.Generate() diff --git a/src/Tools/generateTemplates/templateModuleApp.py b/src/Tools/generateTemplates/templateModuleApp.py index 8ac39b7cfe..02f18a22ef 100644 --- a/src/Tools/generateTemplates/templateModuleApp.py +++ b/src/Tools/generateTemplates/templateModuleApp.py @@ -9,12 +9,12 @@ import generateBase.generateTools class TemplateModuleApp(template.ModelTemplate): def Generate(self): - AppPath = self.path + "/App/" + AppPath = self.outputDir + "/App/" generateBase.generateTools.ensureDir(AppPath) # the main module files AppMain = templateModuleAppMain.TemplateModuleAppMain() - AppMain.path = AppPath + AppMain.outputDir = AppPath AppMain.module = self.module AppMain.Generate() @@ -22,7 +22,7 @@ class TemplateModuleApp(template.ModelTemplate): generateBase.generateTools.ensureDir(AppPath + "Features/") for i in self.module.Content.Feature: AppFeature = templateModuleAppFeature.TemplateFeature() - AppFeature.path = AppPath + "Features/" + AppFeature.outputDir = AppPath + "Features/" AppFeature.module = self.module AppFeature.feature = i AppFeature.Generate() diff --git a/src/Tools/generateTemplates/templateModuleAppFeature.py b/src/Tools/generateTemplates/templateModuleAppFeature.py index ad81d97c1c..0193bf91bb 100644 --- a/src/Tools/generateTemplates/templateModuleAppFeature.py +++ b/src/Tools/generateTemplates/templateModuleAppFeature.py @@ -9,11 +9,11 @@ import generateBase.generateTools class TemplateFeature(template.ModelTemplate): def Generate(self): - file = open(self.path + self.feature.Name + "Imp.cpp", "w") + file = open(self.outputDir + self.feature.Name + "Imp.cpp", "w") generateBase.generateTools.replace(self.TemplateImplement, locals(), file) - file = open(self.path + self.feature.Name + ".cpp", "w") + file = open(self.outputDir + self.feature.Name + ".cpp", "w") generateBase.generateTools.replace(self.TemplateModule, locals(), file) - file = open(self.path + self.feature.Name + ".h", "w") + file = open(self.outputDir + self.feature.Name + ".h", "w") generateBase.generateTools.replace(self.TemplateHeader, locals(), file) # file.write( generateBase.generateTools.replace(self.Template,locals())) diff --git a/src/Tools/generateTemplates/templateModuleAppMain.py b/src/Tools/generateTemplates/templateModuleAppMain.py index 98643a12f3..48967d4ef7 100644 --- a/src/Tools/generateTemplates/templateModuleAppMain.py +++ b/src/Tools/generateTemplates/templateModuleAppMain.py @@ -9,7 +9,7 @@ import generateBase.generateTools class TemplateModuleAppMain(template.ModelTemplate): def Generate(self): - file = open(self.path + "/App" + self.module.Name + ".cpp", "w") + file = open(self.outputDir + "/App" + self.module.Name + ".cpp", "w") generateBase.generateTools.replace(self.Template, locals(), file) # file.write( generateBase.generateTools.replace(self.Template,locals()))