From bb534ef12eb2841d89878f04bb40fd446533adf4 Mon Sep 17 00:00:00 2001 From: walon Date: Sat, 27 Nov 2021 15:23:42 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=87=8D=E6=9E=84=E3=80=91=E9=87=8D?= =?UTF-8?q?=E6=9E=84cfg=20code=E7=94=9F=E6=88=90=EF=BC=8C=E6=B6=88?= =?UTF-8?q?=E9=99=A4=E5=A4=A7=E9=87=8F=E9=87=8D=E5=A4=8D=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/Generate/CppCodeBinRender.cs | 48 ++++------------ .../Source/Generate/CppEditorRender.cs | 28 +--------- .../Source/Generate/CsCodeBinRender.cs | 27 +-------- .../Source/Generate/CsCodeJsonRender.cs | 30 +--------- .../Source/Generate/CsCodeRenderBase.cs | 18 ------ .../Source/Generate/CsCodeUnityJsonRender.cs | 30 +--------- .../Source/Generate/CsEditorRender.cs | 35 ++---------- .../Source/Generate/GoCodeBinRender.cs | 27 +-------- .../Source/Generate/GoCodeJsonRender.cs | 30 +--------- .../Source/Generate/GoCodeRenderBase.cs | 23 -------- .../Source/Generate/JavaCodeBinRender.cs | 30 +--------- .../Source/Generate/JavaCodeJsonRender.cs | 30 +--------- .../Source/Generate/JavaCodeRenderBase.cs | 18 ------ .../Source/Generate/LuaCodeBinRender.cs | 2 + .../Source/Generate/LuaCodeLuaRender.cs | 2 + .../Source/Generate/LuaCodeRenderBase.cs | 24 +------- .../Source/Generate/Python3CodeJsonRender.cs | 30 ++++++---- .../Source/Generate/PythonCodeRenderBase.cs | 44 --------------- .../Source/Generate/RustCodeJsonRender.cs | 39 ++----------- .../Source/Generate/TemplateCodeRenderBase.cs | 56 +++++++++++++++++++ .../Generate/TypescriptCodeBinRender.cs | 28 +--------- .../Generate/TypescriptCodeJsonRender.cs | 28 +--------- .../Generate/TypescriptCodeRenderBase.cs | 9 +-- .../Templates/common/cpp/enum.tpl | 11 +++- src/Luban.Server/Templates/common/cs/enum.tpl | 8 ++- src/Luban.Server/Templates/common/go/enum.tpl | 9 ++- .../Templates/common/java/enum.tpl | 7 +++ .../Templates/common/python/enum.tpl | 9 ++- .../Templates/common/rust/enum.tpl | 9 ++- .../Templates/common/typescript/enum.tpl | 11 +++- .../Templates/config/cpp_bin/tables.tpl | 4 ++ .../Templates/config/go_bin/bean.tpl | 4 +- .../Templates/config/go_bin/table.tpl | 4 +- .../Templates/config/go_bin/tables.tpl | 5 ++ .../Templates/config/go_json/bean.tpl | 4 +- .../Templates/config/go_json/table.tpl | 4 +- .../Templates/config/go_json/tables.tpl | 5 ++ .../Templates/config/java_bin/tables.tpl | 7 ++- .../Templates/config/java_json/tables.tpl | 7 ++- 39 files changed, 223 insertions(+), 521 deletions(-) delete mode 100644 src/Luban.Job.Cfg/Source/Generate/CsCodeRenderBase.cs delete mode 100644 src/Luban.Job.Cfg/Source/Generate/GoCodeRenderBase.cs delete mode 100644 src/Luban.Job.Cfg/Source/Generate/JavaCodeRenderBase.cs delete mode 100644 src/Luban.Job.Cfg/Source/Generate/PythonCodeRenderBase.cs create mode 100644 src/Luban.Job.Cfg/Source/Generate/TemplateCodeRenderBase.cs diff --git a/src/Luban.Job.Cfg/Source/Generate/CppCodeBinRender.cs b/src/Luban.Job.Cfg/Source/Generate/CppCodeBinRender.cs index 2adfa56..319700d 100644 --- a/src/Luban.Job.Cfg/Source/Generate/CppCodeBinRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/CppCodeBinRender.cs @@ -12,8 +12,12 @@ using System.Threading.Tasks; namespace Luban.Job.Cfg.Generate { [Render("code_cpp_bin")] - class CppCodeBinRender : CodeRenderBase + class CppCodeBinRender : TemplateCodeRenderBase { + protected override string CommonRenderTemplateDir => "cpp"; + + protected override string RenderTemplateDir => "cpp_bin"; + public override void Render(GenContext ctx) { // 将所有 头文件定义 生成到一个文件 @@ -96,41 +100,7 @@ namespace {ctx.TopModule} } } - public override string Render(DefEnum c) - { - return RenderUtil.RenderCppEnumClass(c); - } - - public string RenderForwardDefine(DefBean b) - { - return $"{b.CppNamespaceBegin} class {b.Name}; {b.CppNamespaceEnd} "; - } - - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/cpp_bin/bean"); - var result = template.RenderCode(b); - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/cpp_bin/table"); - var result = template.RenderCode(p); - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/cpp_bin/tables"); - var result = template.Render(new { - Name = name, - Tables = tables, - }); - return result; - } - - public string RenderStub(string topModule, List types) + private string RenderStub(string topModule, List types) { var template = StringTemplateUtil.GetTemplate("config/cpp_bin/stub"); return template.RenderCode(new { @@ -138,5 +108,11 @@ namespace {ctx.TopModule} Types = types, }); } + + private string RenderForwardDefine(DefBean b) + { + return $"{b.CppNamespaceBegin} class {b.Name}; {b.CppNamespaceEnd} "; + } + } } diff --git a/src/Luban.Job.Cfg/Source/Generate/CppEditorRender.cs b/src/Luban.Job.Cfg/Source/Generate/CppEditorRender.cs index 9f8ba97..7ac2931 100644 --- a/src/Luban.Job.Cfg/Source/Generate/CppEditorRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/CppEditorRender.cs @@ -6,32 +6,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { [Render("code_cpp_editor")] - class CppEditorRender : CodeRenderBase + class CppEditorRender : TemplateCodeRenderBase { + protected override string CommonRenderTemplateDir => "cpp"; - public override void Render(GenContext ctx) - { - - } - - public override string Render(DefEnum e) - { - return "// enum"; - } - - public override string Render(DefBean b) - { - return "// bean"; - } - - public override string Render(DefTable p) - { - return "// table"; - } - - public override string RenderService(string name, string module, List tables) - { - return "// service"; - } + protected override string RenderTemplateDir => "cpp_editor_json"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/CsCodeBinRender.cs b/src/Luban.Job.Cfg/Source/Generate/CsCodeBinRender.cs index b9c5fcf..ae63244 100644 --- a/src/Luban.Job.Cfg/Source/Generate/CsCodeBinRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/CsCodeBinRender.cs @@ -6,31 +6,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { [Render("code_cs_bin")] - class CsCodeBinRender : CsCodeRenderBase + class CsCodeBinRender : TemplateCodeRenderBase { - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/cs_bin/bean"); - var result = template.RenderCode(b); - return result; - } + protected override string CommonRenderTemplateDir => "cs"; - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/cs_bin/table"); - var result = template.RenderCode(p); - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/cs_bin/tables"); - var result = template.RenderCode(new { - Name = name, - Namespace = module, - Tables = tables, - }); - return result; - } + protected override string RenderTemplateDir => "cs_bin"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/CsCodeJsonRender.cs b/src/Luban.Job.Cfg/Source/Generate/CsCodeJsonRender.cs index 4b7bab0..6ef2de1 100644 --- a/src/Luban.Job.Cfg/Source/Generate/CsCodeJsonRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/CsCodeJsonRender.cs @@ -6,34 +6,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { [Render("code_cs_json")] - class CsCodeJsonRender : CsCodeRenderBase + class CsCodeJsonRender : TemplateCodeRenderBase { - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/cs_json/bean"); - var result = template.RenderCode(b); + protected override string CommonRenderTemplateDir => "cs"; - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/cs_json/table"); - var result = template.RenderCode(p); - - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/cs_json/tables"); - var result = template.RenderCode(new { - Name = name, - Namespace = module, - Tables = tables, - }); - - return result; - } + protected override string RenderTemplateDir => "cs_json"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/CsCodeRenderBase.cs b/src/Luban.Job.Cfg/Source/Generate/CsCodeRenderBase.cs deleted file mode 100644 index 67f0151..0000000 --- a/src/Luban.Job.Cfg/Source/Generate/CsCodeRenderBase.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Luban.Job.Common.Defs; -using Luban.Job.Common.Utils; - -namespace Luban.Job.Cfg.Generate -{ - abstract class CsCodeRenderBase : CodeRenderBase - { - public override void Render(GenContext ctx) - { - GenerateCodeScatter(ctx); - } - - public override string Render(DefEnum e) - { - return RenderUtil.RenderCsEnumClass(e); - } - } -} diff --git a/src/Luban.Job.Cfg/Source/Generate/CsCodeUnityJsonRender.cs b/src/Luban.Job.Cfg/Source/Generate/CsCodeUnityJsonRender.cs index fed3bf0..21ee7b0 100644 --- a/src/Luban.Job.Cfg/Source/Generate/CsCodeUnityJsonRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/CsCodeUnityJsonRender.cs @@ -6,34 +6,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { [Render("code_cs_unity_json")] - class CsCodeUnityJsonRender : CsCodeRenderBase + class CsCodeUnityJsonRender : TemplateCodeRenderBase { - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/cs_unity_json/bean"); - var result = template.RenderCode(b); + protected override string CommonRenderTemplateDir => "cs"; - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/cs_unity_json/table"); - var result = template.RenderCode(p); - - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/cs_unity_json/tables"); - var result = template.RenderCode(new { - Name = name, - Namespace = module, - Tables = tables, - }); - - return result; - } + protected override string RenderTemplateDir => "cs_unity_json"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/CsEditorRender.cs b/src/Luban.Job.Cfg/Source/Generate/CsEditorRender.cs index 9445201..46d6741 100644 --- a/src/Luban.Job.Cfg/Source/Generate/CsEditorRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/CsEditorRender.cs @@ -9,16 +9,19 @@ using System.Threading.Tasks; namespace Luban.Job.Cfg.Generate { [Render("code_cs_unity_editor")] - class CsEditorRender : CsCodeRenderBase + class CsEditorRender : TemplateCodeRenderBase { + override protected string CommonRenderTemplateDir => "cs"; + + override protected string RenderTemplateDir => "cs_editor_json"; + public override void Render(GenContext ctx) { - var render = new CsEditorRender(); foreach (var c in ctx.Assembly.Types.Values) { ctx.Tasks.Add(Task.Run(() => { - var content = FileHeaderUtil.ConcatAutoGenerationHeader(render.RenderAny(c), ELanguage.CS); + var content = FileHeaderUtil.ConcatAutoGenerationHeader(RenderAny(c), ELanguage.CS); var file = RenderFileUtil.GetDefTypePath(c.FullName, ELanguage.CS); var md5 = CacheFileUtil.GenMd5AndAddCache(file, content); ctx.GenCodeFilesInOutputCodeDir.Add(new FileInfo() { FilePath = file, MD5 = md5 }); @@ -26,32 +29,6 @@ namespace Luban.Job.Cfg.Generate } } - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/cs_editor_json/bean"); - var result = template.Render(b); - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/cs_editor_json/table"); - var result = template.Render(p); - - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/cs_editor_json/tables"); - var result = template.Render(new { - Name = name, - Namespace = module, - Tables = tables, - }); - - return result; - } } } diff --git a/src/Luban.Job.Cfg/Source/Generate/GoCodeBinRender.cs b/src/Luban.Job.Cfg/Source/Generate/GoCodeBinRender.cs index 3ff857c..28cf85b 100644 --- a/src/Luban.Job.Cfg/Source/Generate/GoCodeBinRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/GoCodeBinRender.cs @@ -6,31 +6,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { [Render("code_go_bin")] - class GoCodeBinRender : GoCodeRenderBase + class GoCodeBinRender : TemplateCodeRenderBase { - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/go_bin/bean"); - var result = template.RenderCode(b); - return result; - } + protected override string CommonRenderTemplateDir => "go"; - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/go_bin/table"); - var result = template.RenderCode(p); - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/go_bin/tables"); - var result = template.Render(new { - Name = name, - Namespace = module, - Tables = tables, - }); - return result; - } + protected override string RenderTemplateDir => "go_bin"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/GoCodeJsonRender.cs b/src/Luban.Job.Cfg/Source/Generate/GoCodeJsonRender.cs index 362a5cb..9a8703f 100644 --- a/src/Luban.Job.Cfg/Source/Generate/GoCodeJsonRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/GoCodeJsonRender.cs @@ -6,34 +6,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { [Render("code_go_json")] - class GoCodeJsonRender : GoCodeRenderBase + class GoCodeJsonRender : TemplateCodeRenderBase { - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/go_json/bean"); - var result = template.RenderCode(b); + protected override string CommonRenderTemplateDir => "go"; - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/go_json/table"); - var result = template.RenderCode(p); - - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/go_json/tables"); - var result = template.Render(new { - Name = name, - Namespace = module, - Tables = tables, - }); - - return result; - } + protected override string RenderTemplateDir => "go_json"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/GoCodeRenderBase.cs b/src/Luban.Job.Cfg/Source/Generate/GoCodeRenderBase.cs deleted file mode 100644 index 2e40860..0000000 --- a/src/Luban.Job.Cfg/Source/Generate/GoCodeRenderBase.cs +++ /dev/null @@ -1,23 +0,0 @@ -锘縰sing Luban.Job.Common.Defs; -using Luban.Job.Common.Utils; -using System.Collections.Generic; - -namespace Luban.Job.Cfg.Generate -{ - abstract class GoCodeRenderBase : CodeRenderBase - { - public override void Render(GenContext ctx) - { - GenerateCodeScatter(ctx); - } - - public override string Render(DefEnum e) - { - string package = "cfg"; - var template = StringTemplateUtil.GetTemplate("common/go/enum"); - var result = template.RenderCode(e, new Dictionary() { ["package"] = package }); - return result; - } - - } -} diff --git a/src/Luban.Job.Cfg/Source/Generate/JavaCodeBinRender.cs b/src/Luban.Job.Cfg/Source/Generate/JavaCodeBinRender.cs index 7db89e5..dbdc339 100644 --- a/src/Luban.Job.Cfg/Source/Generate/JavaCodeBinRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/JavaCodeBinRender.cs @@ -6,34 +6,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { [Render("code_java_bin")] - class JavaCodeBinRender : JavaCodeRenderBase + class JavaCodeBinRender : TemplateCodeRenderBase { - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/java_bin/bean"); - var result = template.RenderCode(b); + protected override string CommonRenderTemplateDir => "java"; - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/java_bin/table"); - var result = template.RenderCode(p); - - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/java_bin/tables"); - var result = template.Render(new { - Name = name, - Package = module, - Tables = tables, - }); - - return result; - } + protected override string RenderTemplateDir => "java_bin"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/JavaCodeJsonRender.cs b/src/Luban.Job.Cfg/Source/Generate/JavaCodeJsonRender.cs index 27af445..b58b667 100644 --- a/src/Luban.Job.Cfg/Source/Generate/JavaCodeJsonRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/JavaCodeJsonRender.cs @@ -6,34 +6,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { [Render("code_java_json")] - class JavaCodeJsonRender : JavaCodeRenderBase + class JavaCodeJsonRender : TemplateCodeRenderBase { - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/java_json/bean"); - var result = template.RenderCode(b); + protected override string CommonRenderTemplateDir => "java"; - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/java_json/table"); - var result = template.RenderCode(p); - - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/java_json/tables"); - var result = template.Render(new { - Name = name, - Package = module, - Tables = tables, - }); - - return result; - } + protected override string RenderTemplateDir => "java_json"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/JavaCodeRenderBase.cs b/src/Luban.Job.Cfg/Source/Generate/JavaCodeRenderBase.cs deleted file mode 100644 index 0596a5c..0000000 --- a/src/Luban.Job.Cfg/Source/Generate/JavaCodeRenderBase.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Luban.Job.Common.Defs; -using Luban.Job.Common.Utils; - -namespace Luban.Job.Cfg.Generate -{ - abstract class JavaCodeRenderBase : CodeRenderBase - { - public override void Render(GenContext ctx) - { - GenerateCodeScatter(ctx); - } - - public override string Render(DefEnum c) - { - return RenderUtil.RenderJavaEnumClass(c); - } - } -} diff --git a/src/Luban.Job.Cfg/Source/Generate/LuaCodeBinRender.cs b/src/Luban.Job.Cfg/Source/Generate/LuaCodeBinRender.cs index 2be4bf6..875a4c4 100644 --- a/src/Luban.Job.Cfg/Source/Generate/LuaCodeBinRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/LuaCodeBinRender.cs @@ -11,6 +11,8 @@ namespace Luban.Job.Cfg.Generate [Render("code_lua_bin")] class LuaCodeBinRender : LuaCodeRenderBase { + protected override string RenderTemplateDir => "lua_bin"; + public override string RenderAll(List types) { var enums = types.Where(t => t is DefEnum).ToList(); diff --git a/src/Luban.Job.Cfg/Source/Generate/LuaCodeLuaRender.cs b/src/Luban.Job.Cfg/Source/Generate/LuaCodeLuaRender.cs index ce35abd..3dd06be 100644 --- a/src/Luban.Job.Cfg/Source/Generate/LuaCodeLuaRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/LuaCodeLuaRender.cs @@ -12,6 +12,8 @@ namespace Luban.Job.Cfg.Generate [Render("code_lua_lua")] class LuaCodeLuaRender : LuaCodeRenderBase { + protected override string RenderTemplateDir => "lua_lua"; + [ThreadStatic] private static Template t_allRender; diff --git a/src/Luban.Job.Cfg/Source/Generate/LuaCodeRenderBase.cs b/src/Luban.Job.Cfg/Source/Generate/LuaCodeRenderBase.cs index 5156e35..e9b5be0 100644 --- a/src/Luban.Job.Cfg/Source/Generate/LuaCodeRenderBase.cs +++ b/src/Luban.Job.Cfg/Source/Generate/LuaCodeRenderBase.cs @@ -7,8 +7,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { - abstract class LuaCodeRenderBase : CodeRenderBase + abstract class LuaCodeRenderBase : TemplateCodeRenderBase { + protected override string CommonRenderTemplateDir => "lua"; + public override void Render(GenContext ctx) { DefAssembly.LocalAssebmly.CurrentLanguage = Common.ELanguage.LUA; @@ -18,26 +20,6 @@ namespace Luban.Job.Cfg.Generate ctx.GenCodeFilesInOutputCodeDir.Add(new FileInfo() { FilePath = file, MD5 = md5 }); } - public override string Render(DefEnum e) - { - throw new System.NotImplementedException(); - } - - public override string Render(DefTable c) - { - throw new System.NotImplementedException(); - } - - public override string Render(DefBean b) - { - throw new NotImplementedException(); - } - - public override string RenderService(string name, string module, List tables) - { - throw new System.NotImplementedException(); - } - public abstract string RenderAll(List types); } } diff --git a/src/Luban.Job.Cfg/Source/Generate/Python3CodeJsonRender.cs b/src/Luban.Job.Cfg/Source/Generate/Python3CodeJsonRender.cs index f5a7750..53b93c6 100644 --- a/src/Luban.Job.Cfg/Source/Generate/Python3CodeJsonRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/Python3CodeJsonRender.cs @@ -1,27 +1,33 @@ using Luban.Job.Cfg.Defs; using Luban.Job.Common.Generate; using Luban.Job.Common.Utils; +using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { [Render("code_python_json")] [Render("code_python3_json")] - class Python3CodeJsonRender : PythonCodeRenderBase + class Python3CodeJsonRender : TemplateCodeRenderBase { - public override string Render(DefBean b) + protected override string CommonRenderTemplateDir => "python"; + + protected override string RenderTemplateDir => "python_json"; + + public override void Render(GenContext ctx) { - var template = StringTemplateUtil.GetTemplate("config/python_json/bean"); - var result = template.RenderCode(b); + ctx.Render = this; + ctx.Lan = Common.ELanguage.PYTHON; + DefAssembly.LocalAssebmly.CurrentLanguage = ctx.Lan; - return result; - } + var lines = new List(10000); + static void PreContent(List fileContent) + { + //fileContent.Add(PythonStringTemplates.ImportTython3Enum); + //fileContent.Add(PythonStringTemplates.PythonVectorTypes); + fileContent.Add(StringTemplateUtil.GetTemplateString("config/python_json/include")); + } - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/python_json/table"); - var result = template.RenderCode(p); - - return result; + GenerateCodeMonolithic(ctx, RenderFileUtil.GetFileOrDefault(ctx.GenArgs.OutputCodeMonolithicFile, "Types.py"), lines, PreContent, null); } } } diff --git a/src/Luban.Job.Cfg/Source/Generate/PythonCodeRenderBase.cs b/src/Luban.Job.Cfg/Source/Generate/PythonCodeRenderBase.cs deleted file mode 100644 index 0b9f558..0000000 --- a/src/Luban.Job.Cfg/Source/Generate/PythonCodeRenderBase.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Luban.Job.Cfg.Defs; -using Luban.Job.Common.Defs; -using Luban.Job.Common.Utils; -using System.Collections.Generic; - -namespace Luban.Job.Cfg.Generate -{ - abstract class PythonCodeRenderBase : CodeRenderBase - { - public override void Render(GenContext ctx) - { - ctx.Render = this; - ctx.Lan = Common.ELanguage.PYTHON; - DefAssembly.LocalAssebmly.CurrentLanguage = ctx.Lan; - - var lines = new List(10000); - static void PreContent(List fileContent) - { - //fileContent.Add(PythonStringTemplates.ImportTython3Enum); - //fileContent.Add(PythonStringTemplates.PythonVectorTypes); - fileContent.Add(StringTemplateUtil.GetTemplateString("config/python_json/include")); - } - - GenerateCodeMonolithic(ctx, RenderFileUtil.GetFileOrDefault(ctx.GenArgs.OutputCodeMonolithicFile, "Types.py"), lines, PreContent, null); - } - - public override string Render(DefEnum e) - { - return RenderUtil.RenderPythonEnumClass(e); - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/python_json/tables"); - var result = template.RenderCode(new { - Name = name, - Namespace = module, - Tables = tables, - }); - - return result; - } - } -} diff --git a/src/Luban.Job.Cfg/Source/Generate/RustCodeJsonRender.cs b/src/Luban.Job.Cfg/Source/Generate/RustCodeJsonRender.cs index 639d12d..46841e6 100644 --- a/src/Luban.Job.Cfg/Source/Generate/RustCodeJsonRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/RustCodeJsonRender.cs @@ -11,8 +11,12 @@ using System.Threading.Tasks; namespace Luban.Job.Cfg.Generate { [Render("code_rust_json")] - class RustCodeJsonRender : CodeRenderBase + class RustCodeJsonRender : TemplateCodeRenderBase { + protected override string CommonRenderTemplateDir => "rust"; + + protected override string RenderTemplateDir => "rust_json"; + public override void Render(GenContext ctx) { string genType = ctx.GenType; @@ -29,38 +33,5 @@ namespace Luban.Job.Cfg.Generate ls.Add(result); }, null); } - - public override string Render(DefEnum e) - { - return RenderUtil.RenderRustEnumClass(e); - } - - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/rust_json/bean"); - var result = template.RenderCode(b); - - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/rust_json/table"); - var result = template.RenderCode(p); - - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/rust_json/tables"); - var result = template.RenderCode(new { - Name = name, - Namespace = module, - Tables = tables, - }); - - return result; - } } } diff --git a/src/Luban.Job.Cfg/Source/Generate/TemplateCodeRenderBase.cs b/src/Luban.Job.Cfg/Source/Generate/TemplateCodeRenderBase.cs new file mode 100644 index 0000000..48c0cc9 --- /dev/null +++ b/src/Luban.Job.Cfg/Source/Generate/TemplateCodeRenderBase.cs @@ -0,0 +1,56 @@ +锘縰sing Luban.Job.Cfg.Defs; +using Luban.Job.Common.Defs; +using Luban.Job.Common.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Luban.Job.Cfg.Generate +{ + abstract class TemplateCodeRenderBase : CodeRenderBase + { + protected abstract string CommonRenderTemplateDir { get; } + + protected abstract string RenderTemplateDir { get; } + + public override void Render(GenContext ctx) + { + GenerateCodeScatter(ctx); + } + + public override string Render(DefEnum e) + { + var template = StringTemplateUtil.GetTemplate($"common/{CommonRenderTemplateDir}/enum"); + var result = template.RenderCode(e); + + return result; + } + + public override string Render(DefBean b) + { + var template = StringTemplateUtil.GetTemplate($"config/{RenderTemplateDir}/bean"); + var result = template.RenderCode(b); + return result; + } + + public override string Render(DefTable p) + { + var template = StringTemplateUtil.GetTemplate($"config/{RenderTemplateDir}/table"); + var result = template.RenderCode(p); + return result; + } + + public override string RenderService(string name, string module, List tables) + { + var template = StringTemplateUtil.GetTemplate($"config/{RenderTemplateDir}/tables"); + var result = template.RenderCode(new { + Name = name, + Namespace = module, + Tables = tables, + }); + return result; + } + } +} diff --git a/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeBinRender.cs b/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeBinRender.cs index 96aae97..cdeda91 100644 --- a/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeBinRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeBinRender.cs @@ -8,32 +8,6 @@ namespace Luban.Job.Cfg.Generate [Render("code_typescript_bin")] class TypescriptCodeBinRender : TypescriptCodeRenderBase { - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/typescript_bin/bean"); - var result = template.RenderCode(b); - - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/typescript_bin/table"); - var result = template.RenderCode(p); - - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/typescript_bin/tables"); - var result = template.RenderCode(new { - Name = name, - Namespace = module, - Tables = tables, - }); - - return result; - } + protected override string RenderTemplateDir => "typescript_bin"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeJsonRender.cs b/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeJsonRender.cs index a971310..74a9a7b 100644 --- a/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeJsonRender.cs +++ b/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeJsonRender.cs @@ -8,32 +8,6 @@ namespace Luban.Job.Cfg.Generate [Render("code_typescript_json")] class TypescriptCodeJsonRender : TypescriptCodeRenderBase { - public override string Render(DefBean b) - { - var template = StringTemplateUtil.GetTemplate("config/typescript_json/bean"); - var result = template.RenderCode(b); - - return result; - } - - public override string Render(DefTable p) - { - var template = StringTemplateUtil.GetTemplate("config/typescript_json/table"); - var result = template.RenderCode(p); - - return result; - } - - public override string RenderService(string name, string module, List tables) - { - var template = StringTemplateUtil.GetTemplate("config/typescript_json/tables"); - var result = template.RenderCode(new { - Name = name, - Namespace = module, - Tables = tables, - }); - - return result; - } + protected override string RenderTemplateDir => "typescript_json"; } } diff --git a/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeRenderBase.cs b/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeRenderBase.cs index 74233fd..024e1be 100644 --- a/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeRenderBase.cs +++ b/src/Luban.Job.Cfg/Source/Generate/TypescriptCodeRenderBase.cs @@ -6,8 +6,10 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.Generate { - abstract class TypescriptCodeRenderBase : CodeRenderBase + abstract class TypescriptCodeRenderBase : TemplateCodeRenderBase { + protected override string CommonRenderTemplateDir => "typescript"; + public override void Render(GenContext ctx) { string genType = ctx.GenType; @@ -63,10 +65,5 @@ namespace Luban.Job.Cfg.Generate GenerateCodeMonolithic(ctx, RenderFileUtil.GetFileOrDefault(ctx.GenArgs.OutputCodeMonolithicFile, "Types.ts"), lines, preContent, postContent); } - - public override string Render(DefEnum e) - { - return RenderUtil.RenderTypescriptEnumClass(e); - } } } diff --git a/src/Luban.Server/Templates/common/cpp/enum.tpl b/src/Luban.Server/Templates/common/cpp/enum.tpl index 570432f..59c5306 100644 --- a/src/Luban.Server/Templates/common/cpp/enum.tpl +++ b/src/Luban.Server/Templates/common/cpp/enum.tpl @@ -1,4 +1,11 @@ -{{cpp_namespace_begin}} +{{~ + name = x.name + namespace_with_top_module = x.namespace_with_top_module + comment = x.comment + items = x.items +~}} + +{{x.cpp_namespace_begin}} {{~if comment != '' ~}} /** * {{comment | html.escape}} @@ -15,4 +22,4 @@ enum class {{name}} {{item.name}} = {{item.value}}, {{~end~}} }; -{{cpp_namespace_end}} \ No newline at end of file +{{x.cpp_namespace_end}} \ No newline at end of file diff --git a/src/Luban.Server/Templates/common/cs/enum.tpl b/src/Luban.Server/Templates/common/cs/enum.tpl index 44d6073..b928dab 100644 --- a/src/Luban.Server/Templates/common/cs/enum.tpl +++ b/src/Luban.Server/Templates/common/cs/enum.tpl @@ -1,3 +1,9 @@ +{{~ + name = x.name + namespace_with_top_module = x.namespace_with_top_module + comment = x.comment + items = x.items +~}} namespace {{namespace_with_top_module}} { @@ -6,7 +12,7 @@ namespace {{namespace_with_top_module}} /// {{comment | html.escape}} /// {{~end~}} - {{~if is_flags~}} + {{~if x.is_flags~}} [System.Flags] {{~end~}} public enum {{name}} diff --git a/src/Luban.Server/Templates/common/go/enum.tpl b/src/Luban.Server/Templates/common/go/enum.tpl index 34e2d8b..9d28b03 100644 --- a/src/Luban.Server/Templates/common/go/enum.tpl +++ b/src/Luban.Server/Templates/common/go/enum.tpl @@ -1,7 +1,14 @@ +{{~ + name = x.name + namespace_with_top_module = x.namespace_with_top_module + comment = x.comment + items = x.items +~}} + package {{x.top_module}} const ( - {{~for item in x.items ~}} + {{~for item in items ~}} {{x.go_full_name}}_{{item.name}} = {{item.int_value}} {{~end~}} ) diff --git a/src/Luban.Server/Templates/common/java/enum.tpl b/src/Luban.Server/Templates/common/java/enum.tpl index 683cf14..0534122 100644 --- a/src/Luban.Server/Templates/common/java/enum.tpl +++ b/src/Luban.Server/Templates/common/java/enum.tpl @@ -1,3 +1,10 @@ +{{~ + name = x.name + namespace_with_top_module = x.namespace_with_top_module + comment = x.comment + items = x.items +~}} + package {{namespace_with_top_module}}; {{~if comment != '' ~}} /** diff --git a/src/Luban.Server/Templates/common/python/enum.tpl b/src/Luban.Server/Templates/common/python/enum.tpl index fecf260..ce23873 100644 --- a/src/Luban.Server/Templates/common/python/enum.tpl +++ b/src/Luban.Server/Templates/common/python/enum.tpl @@ -1,9 +1,16 @@ +{{~ + name = x.name + namespace_with_top_module = x.namespace_with_top_module + comment = x.comment + items = x.items +~}} + {{~if comment != '' ~}} ''' {{comment | html.escape}} ''' {{~end~}} -class {{py_full_name}}(Enum): +class {{x.py_full_name}}(Enum): {{~ for item in items ~}} {{~if item.comment != '' ~}} ''' diff --git a/src/Luban.Server/Templates/common/rust/enum.tpl b/src/Luban.Server/Templates/common/rust/enum.tpl index a270220..5fe75fa 100644 --- a/src/Luban.Server/Templates/common/rust/enum.tpl +++ b/src/Luban.Server/Templates/common/rust/enum.tpl @@ -1,3 +1,10 @@ +{{~ + name = x.name + namespace_with_top_module = x.namespace_with_top_module + comment = x.comment + items = x.items +~}} + {{~if comment != '' ~}} /** * {{comment | html.escape}} @@ -5,7 +12,7 @@ {{~end~}} #[allow(dead_code)] #[allow(non_camel_case_types)] -pub enum {{rust_full_name}} { +pub enum {{x.rust_full_name}} { {{~for item in items ~}} {{~if item.comment != '' ~}} /** diff --git a/src/Luban.Server/Templates/common/typescript/enum.tpl b/src/Luban.Server/Templates/common/typescript/enum.tpl index 0e33cf5..0cb1109 100644 --- a/src/Luban.Server/Templates/common/typescript/enum.tpl +++ b/src/Luban.Server/Templates/common/typescript/enum.tpl @@ -1,4 +1,11 @@ -{{typescript_namespace_begin}} +{{~ + name = x.name + namespace_with_top_module = x.namespace_with_top_module + comment = x.comment + items = x.items +~}} + +{{x.typescript_namespace_begin}} {{~if comment != '' ~}} /** * {{comment | html.escape}} @@ -14,4 +21,4 @@ export enum {{name}} { {{item.name}} = {{item.value}}, {{~end~}} } -{{typescript_namespace_end}} \ No newline at end of file +{{x.typescript_namespace_end}} \ No newline at end of file diff --git a/src/Luban.Server/Templates/config/cpp_bin/tables.tpl b/src/Luban.Server/Templates/config/cpp_bin/tables.tpl index 3ee19c4..f21dd14 100644 --- a/src/Luban.Server/Templates/config/cpp_bin/tables.tpl +++ b/src/Luban.Server/Templates/config/cpp_bin/tables.tpl @@ -1,3 +1,7 @@ +{{~ + tables = x.tables + name = x.name +~}} class {{name}} { public: diff --git a/src/Luban.Server/Templates/config/go_bin/bean.tpl b/src/Luban.Server/Templates/config/go_bin/bean.tpl index f1788dd..d9a4128 100644 --- a/src/Luban.Server/Templates/config/go_bin/bean.tpl +++ b/src/Luban.Server/Templates/config/go_bin/bean.tpl @@ -1,10 +1,10 @@ -{{- +{{~ go_full_name = x.go_full_name parent_def_type = x.parent_def_type is_abstract_type = x.is_abstract_type export_fields = x.export_fields hierarchy_not_abstract_children = x.hierarchy_not_abstract_children --}} +~}} package {{x.top_module}} diff --git a/src/Luban.Server/Templates/config/go_bin/table.tpl b/src/Luban.Server/Templates/config/go_bin/table.tpl index 54401f1..cd0aac2 100644 --- a/src/Luban.Server/Templates/config/go_bin/table.tpl +++ b/src/Luban.Server/Templates/config/go_bin/table.tpl @@ -1,4 +1,4 @@ -{{- +{{~ go_full_name = x.go_full_name key_type = x.key_ttype key_type1 = x.key_ttype1 @@ -7,7 +7,7 @@ index_field = x.index_field index_field1 = x.index_field1 index_field2 = x.index_field2 --}} +~}} package {{x.top_module}} diff --git a/src/Luban.Server/Templates/config/go_bin/tables.tpl b/src/Luban.Server/Templates/config/go_bin/tables.tpl index 233963d..396dbb4 100644 --- a/src/Luban.Server/Templates/config/go_bin/tables.tpl +++ b/src/Luban.Server/Templates/config/go_bin/tables.tpl @@ -1,3 +1,8 @@ +{{~ + name = x.name + namespace = x.namespace + tables = x.tables +~}} package {{namespace}} diff --git a/src/Luban.Server/Templates/config/go_json/bean.tpl b/src/Luban.Server/Templates/config/go_json/bean.tpl index 67845bb..0a80cfb 100644 --- a/src/Luban.Server/Templates/config/go_json/bean.tpl +++ b/src/Luban.Server/Templates/config/go_json/bean.tpl @@ -1,10 +1,10 @@ -{{- +{{~ go_full_name = x.go_full_name parent_def_type = x.parent_def_type is_abstract_type = x.is_abstract_type export_fields = x.export_fields hierarchy_not_abstract_children = x.hierarchy_not_abstract_children --}} +~}} package {{x.top_module}} diff --git a/src/Luban.Server/Templates/config/go_json/table.tpl b/src/Luban.Server/Templates/config/go_json/table.tpl index ae924ef..ec0caf1 100644 --- a/src/Luban.Server/Templates/config/go_json/table.tpl +++ b/src/Luban.Server/Templates/config/go_json/table.tpl @@ -1,4 +1,4 @@ -{{- +{{~ go_full_name = x.go_full_name key_type = x.key_ttype key_type1 = x.key_ttype1 @@ -7,7 +7,7 @@ index_field = x.index_field index_field1 = x.index_field1 index_field2 = x.index_field2 --}} +~}} package {{x.top_module}} diff --git a/src/Luban.Server/Templates/config/go_json/tables.tpl b/src/Luban.Server/Templates/config/go_json/tables.tpl index 7584728..deb2234 100644 --- a/src/Luban.Server/Templates/config/go_json/tables.tpl +++ b/src/Luban.Server/Templates/config/go_json/tables.tpl @@ -1,3 +1,8 @@ +{{~ + name = x.name + namespace = x.namespace + tables = x.tables +~}} package {{namespace}} diff --git a/src/Luban.Server/Templates/config/java_bin/tables.tpl b/src/Luban.Server/Templates/config/java_bin/tables.tpl index cb7d996..d451a3e 100644 --- a/src/Luban.Server/Templates/config/java_bin/tables.tpl +++ b/src/Luban.Server/Templates/config/java_bin/tables.tpl @@ -1,4 +1,9 @@ -package {{package}}; +{{~ + name = x.name + namespace = x.namespace + tables = x.tables +~}} +package {{namespace}}; import bright.serialization.*; diff --git a/src/Luban.Server/Templates/config/java_json/tables.tpl b/src/Luban.Server/Templates/config/java_json/tables.tpl index d73045c..8038088 100644 --- a/src/Luban.Server/Templates/config/java_json/tables.tpl +++ b/src/Luban.Server/Templates/config/java_json/tables.tpl @@ -1,4 +1,9 @@ -package {{package}}; +{{~ + name = x.name + namespace = x.namespace + tables = x.tables +~}} +package {{namespace}}; import com.google.gson.JsonElement;