diff --git a/src/Luban.Job.Cfg/Source/Defs/TTypeTemplateExtends.cs b/src/Luban.Job.Cfg/Source/Defs/TTypeTemplateExtends.cs index 8af03d2..fcd5205 100644 --- a/src/Luban.Job.Cfg/Source/Defs/TTypeTemplateExtends.cs +++ b/src/Luban.Job.Cfg/Source/Defs/TTypeTemplateExtends.cs @@ -160,14 +160,27 @@ namespace Luban.Job.Cfg.Defs { if (type.IsNullable) { - return $"if {jsonVarName} != None: {type.Apply(PyUnderingDeserializeVisitor.Py3Ins, jsonVarName, fieldName)}"; + return $"if {jsonVarName} != None: {type.Apply(PyUnderingDeserializeVisitor.Ins, jsonVarName, fieldName)}"; } else { - return type.Apply(PyUnderingDeserializeVisitor.Py3Ins, jsonVarName, fieldName); + return type.Apply(PyUnderingDeserializeVisitor.Ins, jsonVarName, fieldName); } } + public static string Py3DeserializeField(string fieldName, string jsonVarName, string jsonFieldName, TType type) + { + if (type.IsNullable) + { + return $"if {jsonVarName}.get('{jsonFieldName}') != None: {type.Apply(PyUnderingDeserializeVisitor.Ins, $"{jsonVarName}['{jsonFieldName}']", fieldName)}"; + } + else + { + return type.Apply(PyUnderingDeserializeVisitor.Ins, $"{jsonVarName}['{jsonFieldName}']", fieldName); + } + } + + /* public static string Py27DeserializeValue(string fieldName, string jsonVarName, TType type) { if (type.IsNullable) @@ -180,18 +193,6 @@ namespace Luban.Job.Cfg.Defs } } - public static string Py3DeserializeField(string fieldName, string jsonVarName, string jsonFieldName, TType type) - { - if (type.IsNullable) - { - return $"if {jsonVarName}.get('{jsonFieldName}') != None: {type.Apply(PyUnderingDeserializeVisitor.Py3Ins, $"{jsonVarName}['{jsonFieldName}']", fieldName)}"; - } - else - { - return type.Apply(PyUnderingDeserializeVisitor.Py3Ins, $"{jsonVarName}['{jsonFieldName}']", fieldName); - } - } - public static string Py27DeserializeField(string fieldName, string jsonVarName, string jsonFieldName, TType type) { if (type.IsNullable) @@ -203,5 +204,6 @@ namespace Luban.Job.Cfg.Defs return type.Apply(PyUnderingDeserializeVisitor.Py27Ins, $"{jsonVarName}['{jsonFieldName}']", fieldName); } } + */ } } diff --git a/src/Luban.Job.Cfg/Source/Generate/Python27CodeJsonRender.cs b/src/Luban.Job.Cfg/Source/Generate/Python27CodeJsonRender.cs deleted file mode 100644 index d1c1e6e..0000000 --- a/src/Luban.Job.Cfg/Source/Generate/Python27CodeJsonRender.cs +++ /dev/null @@ -1,128 +0,0 @@ -using Luban.Job.Cfg.Defs; -using Luban.Job.Common.Defs; -using Scriban; -using System; -using System.Collections.Generic; - -namespace Luban.Job.Cfg.Generate -{ - class Python27CodeJsonRender : PythonCodeRenderBase - { - - [ThreadStatic] - private static Template t_beanRender; - public override string Render(DefBean b) - { - var template = t_beanRender ??= Template.Parse(@" - -{{ - name = x.py_full_name - is_abstract_type = x.is_abstract_type - parent_def_type = x.parent_def_type - export_fields = x.export_fields - hierarchy_export_fields = x.hierarchy_export_fields -}} - -{{~if x.comment != '' ~}} -''' -{{x.comment}} -''' -{{~end~}} -class {{name}} {{if parent_def_type}}({{parent_def_type.py_full_name}}){{end}}: -{{~if x.is_abstract_type~}} - _childrenTypes = None - - @staticmethod - def fromJson(_json_): - childrenTypes = {{name}}._childrenTypes - if not childrenTypes: - childrenTypes = {{name}}._childrenTypes = { - {{~ for child in x.hierarchy_not_abstract_children~}} - '{{child.name}}': {{child.py_full_name}}, - {{~end~}} - } - type = _json_['__type__'] - child = {{name}}._childrenTypes.get(type) - if child != None: - return child(_json_) - else: - raise Exception() -{{~end~}} - - def __init__(self, _json_): - {{~if parent_def_type~}} - {{parent_def_type.py_full_name}}.__init__(self, _json_) - {{~end~}} - {{~ for field in export_fields ~}} - {{~if !field.ctype.is_nullable~}} - if _json_['{{field.name}}'] == None: raise Exception() - {{~end~}} - {{py27_deserialize ('self.' + field.py_style_name) ('_json_[""' + field.name + '""]') field.ctype}} - {{~end~}} - {{~if export_fields.empty?}} - pass - {{~end~}} -"); - var result = template.RenderCode(b); - - return result; - } - - [ThreadStatic] - private static Template t_tableRender; - public override string Render(DefTable p) - { - var template = t_tableRender ??= Template.Parse(@" -{{ - name = x.py_full_name - key_type = x.key_ttype - key_type1 = x.key_ttype1 - key_type2 = x.key_ttype2 - value_type = x.value_ttype -}} -{{~if x.comment != '' ~}} -''' -{{x.comment}} -''' -{{~end~}} -class {{name}}: - {{~if x.is_map_table ~}} - - def __init__(self, _json_ ): - self._dataMap = {} - self._dataList = [] - - for _json2_ in _json_: - {{py27_deserialize '_v' '_json2_' value_type}} - self._dataList.append(_v) - self._dataMap[_v.{{x.index_field.py_style_name}}] = _v - - def getDataMap(self) : return self._dataMap - def getDataList(self) : return self._dataList - - def get(self, key) : return self._dataMap.get(key) - - {{~else~}} - - def __init__(self, _json_): - if (len(_json_) != 1): raise Exception('table mode=one, but size != 1') - {{py27_deserialize 'self._data' '_json_[0]' value_type}} - - def getData(self) : return self._data - - {{~ for field in value_type.bean.hierarchy_export_fields ~}} -{{~if field.comment != '' ~}} - ''' - {{field.comment}} - ''' -{{~end~}} - def {{field.py_style_name}}(self) : return self._data.{{field.py_style_name}} - {{~end~}} - {{~end~}} -"); - var result = template.RenderCode(p); - - return result; - } - } -} diff --git a/src/Luban.Job.Cfg/Source/JobController.cs b/src/Luban.Job.Cfg/Source/JobController.cs index ca9201f..1a61b50 100644 --- a/src/Luban.Job.Cfg/Source/JobController.cs +++ b/src/Luban.Job.Cfg/Source/JobController.cs @@ -46,7 +46,7 @@ namespace Luban.Job.Cfg [Option("output_data_json_monolithic_file", Required = false, HelpText = "output monolithic json file")] public string OutputDataJsonMonolithicFile { get; set; } - [Option("gen_types", Required = true, HelpText = "code_cs_bin,code_cs_json,code_cs_unity_json,code_lua_bin,code_java_bin,code_go_bin,code_go_json,code_cpp_bin,code_python27_json,code_python3_json,code_typescript_bin,code_typescript_json,data_bin,data_lua,data_json,data_json2,data_json_monolithic . can be multi")] + [Option("gen_types", Required = true, HelpText = "code_cs_bin,code_cs_json,code_cs_unity_json,code_lua_bin,code_java_bin,code_go_bin,code_go_json,code_cpp_bin,code_python3_json,code_typescript_bin,code_typescript_json,data_bin,data_lua,data_json,data_json2,data_json_monolithic . can be multi")] public string GenType { get; set; } [Option('s', "service", Required = true, HelpText = "service")] @@ -87,7 +87,6 @@ namespace Luban.Job.Cfg case "code_cpp_bin": return new CppCodeBinRender(); case "code_lua_bin": return new LuaCodeBinRender(); case "code_lua_lua": return new LuaCodeLuaRender(); - case "code_python27_json": return new Python27CodeJsonRender(); case "code_python3_json": return new Python3CodeJsonRender(); case "code_typescript_bin": return new TypescriptCodeBinRender(); case "code_typescript_json": return new TypescriptCodeJsonRender(); @@ -112,7 +111,6 @@ namespace Luban.Job.Cfg case "code_cpp_bin": return ELanguage.CPP; case "code_lua_bin": case "code_lua_lua": return ELanguage.LUA; - case "code_python27_json": case "code_python3_json": return ELanguage.PYTHON; case "code_typescript_bin": case "code_typescript_json": return ELanguage.TYPESCRIPT; @@ -359,7 +357,7 @@ namespace Luban.Job.Cfg GenTypescriptCode(ctx); break; } - case "code_python27_json": + case "code_python3_json": { GenPythonCodes(ctx); break; @@ -590,29 +588,14 @@ namespace Luban.Job.Cfg ctx.Render = CreateCodeRender(genType); ctx.Lan = GetLanguage(genType); - var isPython3 = genType.Contains("python3"); - var lines = new List(10000); - Action> preContent = (fileContent) => + static void PreContent(List fileContent) { - if (isPython3) - { - fileContent.Add(PythonStringTemplates.ImportTython3Enum); - } + fileContent.Add(PythonStringTemplates.ImportTython3Enum); fileContent.Add(PythonStringTemplates.PythonVectorTypes); - }; + } - GenerateCodeMonolithic(ctx, "Types.py", lines, preContent, null); - - - ctx.Tasks.Add(Task.Run(() => - { - var moduleInitContent = ""; - var initFile = "__init__.py"; - - var initMd5 = CacheFileUtil.GenMd5AndAddCache(initFile, moduleInitContent); - ctx.GenCodeFilesInOutputCodeDir.Add(new FileInfo() { FilePath = initFile, MD5 = initMd5 }); - })); + GenerateCodeMonolithic(ctx, "Types.py", lines, PreContent, null); } private void GenCppCode(GenContext ctx) diff --git a/src/Luban.Job.Cfg/Source/TypeVisitors/PyDeserializeVisitor.cs b/src/Luban.Job.Cfg/Source/TypeVisitors/PyDeserializeVisitor.cs deleted file mode 100644 index 808ce43..0000000 --- a/src/Luban.Job.Cfg/Source/TypeVisitors/PyDeserializeVisitor.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Luban.Job.Common.Types; -using Luban.Job.Common.TypeVisitors; - -namespace Luban.Job.Cfg.TypeVisitors -{ - class PyDeserializeVisitor : DecoratorFuncVisitor - { - public static PyDeserializeVisitor Py3Ins { get; } = new PyDeserializeVisitor(true); - - - public static PyDeserializeVisitor Py27Ins { get; } = new PyDeserializeVisitor(false); - - public PyDeserializeVisitor(bool py3) - { - Python3 = py3; - - UnderringVisitor = py3 ? PyUnderingDeserializeVisitor.Py3Ins : PyUnderingDeserializeVisitor.Py27Ins; - } - - public bool Python3 { get; } - - PyUnderingDeserializeVisitor UnderringVisitor { get; } - - public override string DoAccept(TType type, string jsonFieldName, string fieldName) - { - if (type.IsNullable) - { - return $"if {jsonFieldName} != None: {type.Apply(UnderringVisitor, jsonFieldName, fieldName)}"; - } - else - { - return type.Apply(UnderringVisitor, jsonFieldName, fieldName); - } - } - } -} diff --git a/src/Luban.Job.Cfg/Source/TypeVisitors/PyUnderingDeserializeVisitor.cs b/src/Luban.Job.Cfg/Source/TypeVisitors/PyUnderingDeserializeVisitor.cs index 799988d..adc3fff 100644 --- a/src/Luban.Job.Cfg/Source/TypeVisitors/PyUnderingDeserializeVisitor.cs +++ b/src/Luban.Job.Cfg/Source/TypeVisitors/PyUnderingDeserializeVisitor.cs @@ -5,16 +5,7 @@ namespace Luban.Job.Cfg.TypeVisitors { class PyUnderingDeserializeVisitor : ITypeFuncVisitor { - public static PyUnderingDeserializeVisitor Py3Ins { get; } = new PyUnderingDeserializeVisitor(true); - - public static PyUnderingDeserializeVisitor Py27Ins { get; } = new PyUnderingDeserializeVisitor(false); - - public PyUnderingDeserializeVisitor(bool py3) - { - Python3 = py3; - } - - public bool Python3 { get; } + public static PyUnderingDeserializeVisitor Ins { get; } = new(); public string Accept(TBool type, string jsonVarName, string fieldName) { @@ -68,7 +59,7 @@ namespace Luban.Job.Cfg.TypeVisitors public string Accept(TEnum type, string jsonVarName, string fieldName) { - return Python3 ? $"{fieldName} = {type.DefineEnum.PyFullName}({jsonVarName})" : $"{fieldName} = {jsonVarName}"; + return $"{fieldName} = {type.DefineEnum.PyFullName}({jsonVarName})"; } public string Accept(TString type, string jsonVarName, string fieldName)