From 7fc75871d46cc9885b05419abd87a19951ea55aa Mon Sep 17 00:00:00 2001 From: walon Date: Thu, 2 Dec 2021 13:43:33 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=89=B9=E6=80=A7=E3=80=91=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20enum=20=E7=9A=84external=20type=E6=98=A0=E5=B0=84?= =?UTF-8?q?=E3=80=82=E5=8F=AF=E4=BB=A5=E5=B0=86=E5=AE=9A=E4=B9=89=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E6=9F=90=E4=B8=AA=E6=9E=9A=E4=B8=BE=E7=B1=BB=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E5=88=B0=E7=8E=B0=E6=88=90=E7=9A=84=E5=8F=A6=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=9E=9A=E4=B8=BE=E7=B1=BB=E3=80=82=E6=9A=82=E6=97=B6?= =?UTF-8?q?=E5=8F=AA=E6=94=AF=E6=8C=81cs=E8=AF=AD=E8=A8=80=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Luban.Job.Cfg/Source/Defs/DefAssembly.cs | 12 +-- src/Luban.Job.Cfg/Source/JobController.cs | 15 +--- .../Source/Defs/CommonDefLoader.cs | 80 ++++++++++++++++++- .../Source/Defs/DefAssemblyBase.cs | 54 ++++++++++++- .../Source/Defs/DefBeanBase.cs | 3 + src/Luban.Job.Common/Source/Defs/DefEnum.cs | 6 +- .../Source/Defs/DefFieldBase.cs | 2 +- .../Source/Defs/DefTypeBase.cs | 33 +++++++- src/Luban.Job.Common/Source/ELanguage.cs | 2 +- src/Luban.Job.Common/Source/RawDefs/Bean.cs | 2 + .../Source/RawDefs/DefinesCommon.cs | 8 +- .../Source/RawDefs/ExternalType.cs | 25 ++++++ src/Luban.Job.Common/Source/RawDefs/PEnum.cs | 2 + .../TypeVisitors/CsUnderingDefineTypeName.cs | 3 +- .../CsUnderingDeserializeVisitor.cs | 2 +- src/Luban.Job.Common/Source/Utils/DefUtil.cs | 27 ++++++- .../Source/Utils/RenderFileUtil.cs | 4 +- src/Luban.Job.Db/Source/Defs/DefAssembly.cs | 5 +- src/Luban.Job.Db/Source/JobController.cs | 11 +-- .../Source/Defs/DefAssembly.cs | 6 +- src/Luban.Job.Proto/Source/JobController.cs | 14 +--- 21 files changed, 250 insertions(+), 66 deletions(-) create mode 100644 src/Luban.Job.Common/Source/RawDefs/ExternalType.cs diff --git a/src/Luban.Job.Cfg/Source/Defs/DefAssembly.cs b/src/Luban.Job.Cfg/Source/Defs/DefAssembly.cs index 703eb00..1aa1a9d 100644 --- a/src/Luban.Job.Cfg/Source/Defs/DefAssembly.cs +++ b/src/Luban.Job.Cfg/Source/Defs/DefAssembly.cs @@ -187,17 +187,19 @@ namespace Luban.Job.Cfg.Defs return refTypes.Values.ToList(); } - public void Load(string outputService, Defines defines) + public void Load(Defines defines, RemoteAgent agent, GenArgs args) { + LoadCommon(defines, agent, args); + + OutputCompactJson = args.OutputCompactJson; + SupportDatetimeType = true; - TopModule = defines.TopModule; - - CfgTargetService = defines.Services.Find(s => s.Name == outputService); + CfgTargetService = defines.Services.Find(s => s.Name == args.Service); if (CfgTargetService == null) { - throw new ArgumentException($"service:{outputService} not exists"); + throw new ArgumentException($"service:{args.Service} not exists"); } if (!string.IsNullOrWhiteSpace(_patchName)) diff --git a/src/Luban.Job.Cfg/Source/JobController.cs b/src/Luban.Job.Cfg/Source/JobController.cs index 3e93a31..b49e6f9 100644 --- a/src/Luban.Job.Cfg/Source/JobController.cs +++ b/src/Luban.Job.Cfg/Source/JobController.cs @@ -145,19 +145,8 @@ namespace Luban.Job.Cfg TimeZoneInfo timeZoneInfo = string.IsNullOrEmpty(args.L10nTimeZone) ? null : TimeZoneInfo.FindSystemTimeZoneById(args.L10nTimeZone); var excludeTags = args.ExportExcludeTags.Split(',').Select(t => t.Trim().ToLowerInvariant()).Where(t => !string.IsNullOrEmpty(t)).ToList(); - var ass = new DefAssembly(args.L10nPatchName, timeZoneInfo, excludeTags, agent) - { - CsUseUnityVectors = args.CsUseUnityVectors, - OutputCompactJson = args.OutputCompactJson, - NamingConventionModule = args.NamingConventionModule, - NamingConventionType = args.NamingConventionType, - NamingConventionBeanMember = args.NamingConventionBeanMember, - NamingConventionEnumMember = args.NamingConventionEnumMember, - }; - - ass.Load(args.Service, rawDefines); - - DefAssemblyBase.LocalAssebmly = ass; + var ass = new DefAssembly(args.L10nPatchName, timeZoneInfo, excludeTags, agent); + ass.Load(rawDefines, agent, args); List exportTables = ass.GetExportTables(); List exportTypes = ass.GetExportTypes(); diff --git a/src/Luban.Job.Common/Source/Defs/CommonDefLoader.cs b/src/Luban.Job.Common/Source/Defs/CommonDefLoader.cs index 1ab4e40..ddb635c 100644 --- a/src/Luban.Job.Common/Source/Defs/CommonDefLoader.cs +++ b/src/Luban.Job.Common/Source/Defs/CommonDefLoader.cs @@ -1,5 +1,6 @@ using Luban.Common.Utils; using Luban.Job.Common.RawDefs; +using Luban.Job.Common.Utils; using Luban.Server.Common; using System; using System.Collections.Generic; @@ -50,6 +51,7 @@ namespace Luban.Job.Common.Defs protected readonly List _enums = new List(); protected readonly List _beans = new List(); protected readonly HashSet _externalSelectors = new(); + protected readonly Dictionary _externalTypes = new(); protected CommonDefLoader(IAgent agent) { @@ -61,6 +63,7 @@ namespace Luban.Job.Common.Defs _moduleDefineHandlers.Add("module", AddModule); _moduleDefineHandlers.Add("enum", AddEnum); _moduleDefineHandlers.Add("bean", AddBean); + _moduleDefineHandlers.Add("externaltype", AddExternalType); } public string RootXml => _rootXml; @@ -111,6 +114,7 @@ namespace Luban.Job.Common.Defs defines.Enums = _enums; defines.Beans = _beans; defines.ExternalSelectors = _externalSelectors; + defines.ExternalTypes = _externalTypes; } #region root handler @@ -302,11 +306,11 @@ namespace Luban.Job.Common.Defs } } - private static readonly List _enumOptionalAttrs = new List { "flags", "comment", "tags" }; + private static readonly List _enumOptionalAttrs = new List { "flags", "comment", "tags", "unique", "externaltype" }; private static readonly List _enumRequiredAttrs = new List { "name" }; - private static readonly List _enumItemOptionalAttrs = new List { "value", "alias", "comment", "tags", "unique" }; + private static readonly List _enumItemOptionalAttrs = new List { "value", "alias", "comment", "tags" }; private static readonly List _enumItemRequiredAttrs = new List { "name" }; protected void AddEnum(string defineFile, XElement e) @@ -320,6 +324,7 @@ namespace Luban.Job.Common.Defs IsFlags = XmlUtil.GetOptionBoolAttribute(e, "flags"), Tags = XmlUtil.GetOptionalAttribute(e, "tags"), IsUniqueItemId = XmlUtil.GetOptionBoolAttribute(e, "unique", true), + ExternalType = XmlUtil.GetOptionalAttribute(e, "externaltype"), }; foreach (XElement item in e.Elements()) @@ -347,7 +352,76 @@ namespace Luban.Job.Common.Defs { throw new LoadDefException($"定义文件:{_rootXml} externalselector name:{name} 重复"); } - s_logger.Info("add selector:{}", name); + s_logger.Trace("add selector:{}", name); + } + + private static readonly List _externalRequiredAttrs = new List { "name" }; + private void AddExternalType(string defineFile, XElement e) + { + ValidAttrKeys(_rootXml, e, null, _externalRequiredAttrs); + string name = XmlUtil.GetRequiredAttribute(e, "name"); + + if (_externalTypes.ContainsKey(name)) + { + throw new LoadDefException($"定义文件:{_rootXml} externaltype:{name} 重复"); + } + + var et = new ExternalType() + { + Name = name, + }; + var mappers = new Dictionary(); + foreach (XElement mapperEle in e.Elements()) + { + var tagName = mapperEle.Name.LocalName; + if (tagName == "mapper") + { + var mapper = CreateMapper(defineFile, name, mapperEle); + string uniqKey = $"{mapper.Lan}##{mapper.Selector}"; + if (mappers.ContainsKey(uniqKey)) + { + throw new LoadDefException($"定义文件:{_rootXml} externaltype name:{name} mapper(lan='{mapper.Lan}',selector='{mapper.Selector}') 重复"); + } + mappers.Add(uniqKey, mapper); + et.Mappers.Add(mapper); + s_logger.Trace("add mapper. externaltype:{} mapper:{@}", name, mapper); + } + else + { + throw new LoadDefException($"定义文件:{defineFile} externaltype:{name} 非法 tag:'{tagName}'"); + } + } + _externalTypes.Add(name, et); + } + + private static readonly List _mapperOptionalAttrs = new List { }; + private static readonly List _mapperRequiredAttrs = new List { "lan", "selector" }; + private ExternalTypeMapper CreateMapper(string defineFile, string externalType, XElement e) + { + ValidAttrKeys(_rootXml, e, _mapperOptionalAttrs, _mapperRequiredAttrs); + var m = new ExternalTypeMapper() + { + Lan = DefUtil.ParseLanguage(XmlUtil.GetRequiredAttribute(e, "lan")), + Selector = XmlUtil.GetRequiredAttribute(e, "selector"), + }; + foreach (XElement attrEle in e.Elements()) + { + var tagName = attrEle.Name.LocalName; + switch (tagName) + { + case "typename": + { + m.TypeName = attrEle.Value; + break; + } + default: throw new LoadDefException($"定义文件:{defineFile} externaltype:{externalType} 非法 tag:{tagName}"); + } + } + if (string.IsNullOrWhiteSpace(m.TypeName)) + { + throw new LoadDefException($"定义文件:{defineFile} externaltype:{externalType} lan:{m.Lan} selector:{m.Selector} 没有定义 typename"); + } + return m; } #endregion } diff --git a/src/Luban.Job.Common/Source/Defs/DefAssemblyBase.cs b/src/Luban.Job.Common/Source/Defs/DefAssemblyBase.cs index 2739dbc..278f81c 100644 --- a/src/Luban.Job.Common/Source/Defs/DefAssemblyBase.cs +++ b/src/Luban.Job.Common/Source/Defs/DefAssemblyBase.cs @@ -1,5 +1,6 @@ using Luban.Common.Utils; +using Luban.Job.Common.RawDefs; using Luban.Job.Common.Types; using Luban.Job.Common.Utils; using Luban.Server.Common; @@ -54,6 +55,55 @@ namespace Luban.Job.Common.Defs public ELanguage CurrentLanguage { get; set; } = ELanguage.INVALID; + public HashSet ExternalSelectors { get; private set; } + + private Dictionary ExternalTypes { get; set; } + + public List CurrentExternalSelectors { get; private set; } + + private void SetCurrentExternalSelectors(string selectors) + { + if (string.IsNullOrEmpty(selectors)) + { + CurrentExternalSelectors = new List(); + } + else + { + + CurrentExternalSelectors = selectors.Split(',').Select(s => s.Trim()).ToList(); + foreach (var selector in CurrentExternalSelectors) + { + if (!ExternalSelectors.Contains(selector)) + { + throw new Exception($"未知 externalselector:{selector}, 有效值应该为 '{Bright.Common.StringUtil.CollectionToString(ExternalSelectors)}'"); + } + } + } + } + + public void LoadCommon(DefinesCommon defines, IAgent agent, GenArgsBase args) + { + LocalAssebmly = this; + + this.Agent = agent; + this.TopModule = defines.TopModule; + this.ExternalSelectors = defines.ExternalSelectors; + this.ExternalTypes = defines.ExternalTypes; + + SetCurrentExternalSelectors(args.ExternalSelectors); + + CsUseUnityVectors = args.CsUseUnityVectors; + NamingConventionModule = args.NamingConventionModule; + NamingConventionType = args.NamingConventionType; + NamingConventionBeanMember = args.NamingConventionBeanMember; + NamingConventionEnumMember = args.NamingConventionEnumMember; + } + + public bool TryGetExternalType(string typeName, out ExternalType type) + { + return ExternalTypes.TryGetValue(typeName, out type); + } + public void AddType(DefTypeBase type) { string fullName = type.FullName; @@ -175,11 +225,7 @@ namespace Luban.Job.Common.Defs throw new Exception($"not support nullable type:'{module}.{type}'"); } nullable = true; -#if !LUBAN_LITE - type = type[0..^1]; -#else type = type.Substring(0, type.Length - 1); -#endif } else { diff --git a/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs b/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs index 494c6b5..2eea545 100644 --- a/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs +++ b/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs @@ -52,6 +52,7 @@ namespace Luban.Job.Common.Defs IsValueType = b.IsValueType; Comment = b.Comment; Tags = DefUtil.ParseAttrs(b.Tags); + _externalTypeName = b.ExternalType; foreach (var field in b.Fields) { Fields.Add(CreateField(field, 0)); @@ -160,6 +161,8 @@ namespace Luban.Job.Common.Defs public override void Compile() { + base.Compile(); + var cs = new List(); if (Children != null) { diff --git a/src/Luban.Job.Common/Source/Defs/DefEnum.cs b/src/Luban.Job.Common/Source/Defs/DefEnum.cs index 82f9fd2..edbc035 100644 --- a/src/Luban.Job.Common/Source/Defs/DefEnum.cs +++ b/src/Luban.Job.Common/Source/Defs/DefEnum.cs @@ -54,7 +54,6 @@ namespace Luban.Job.Common.Defs return _nameOrAlias2Value.TryGetValue(name, out value); } - public int GetValueByNameOrAlias(string name) { // TODO flags ? @@ -98,7 +97,7 @@ namespace Luban.Job.Common.Defs IsUniqueItemId = e.IsUniqueItemId; Comment = e.Comment; Tags = DefUtil.ParseAttrs(e.Tags); - + _externalTypeName = e.ExternalType; foreach (var item in e.Items) { Items.Add(new Item @@ -115,6 +114,7 @@ namespace Luban.Job.Common.Defs public override void Compile() { + base.Compile(); var fullName = FullName; int lastEnumValue = -1; @@ -191,6 +191,8 @@ namespace Luban.Job.Common.Defs _vaule2Name.Add(item.IntValue, item.Name); } } + + } } diff --git a/src/Luban.Job.Common/Source/Defs/DefFieldBase.cs b/src/Luban.Job.Common/Source/Defs/DefFieldBase.cs index 110cb8e..ff76454 100644 --- a/src/Luban.Job.Common/Source/Defs/DefFieldBase.cs +++ b/src/Luban.Job.Common/Source/Defs/DefFieldBase.cs @@ -42,7 +42,7 @@ namespace Luban.Job.Common.Defs case ELanguage.GO: cn = TypeUtil.ToPascalCase(Name); break; case ELanguage.CPP: cn = TypeUtil.ToCamelCase(Name); break; case ELanguage.LUA: cn = TypeUtil.ToUnderScores(Name); break; - case ELanguage.JS: cn = TypeUtil.ToCamelCase(Name); break; + case ELanguage.JAVASCRIPT: cn = TypeUtil.ToCamelCase(Name); break; case ELanguage.TYPESCRIPT: cn = TypeUtil.ToCamelCase(Name); break; case ELanguage.PYTHON: cn = TypeUtil.ToUnderScores(Name); break; case ELanguage.RUST: cn = TypeUtil.ToUnderScores(Name); break; diff --git a/src/Luban.Job.Common/Source/Defs/DefTypeBase.cs b/src/Luban.Job.Common/Source/Defs/DefTypeBase.cs index c88f43a..4e1053b 100644 --- a/src/Luban.Job.Common/Source/Defs/DefTypeBase.cs +++ b/src/Luban.Job.Common/Source/Defs/DefTypeBase.cs @@ -1,6 +1,8 @@ using Luban.Common.Utils; +using Luban.Job.Common.RawDefs; using Luban.Job.Common.Utils; using Luban.Server.Common; +using System; using System.Collections.Generic; namespace Luban.Job.Common.Defs @@ -19,6 +21,10 @@ namespace Luban.Job.Common.Defs public string Namespace { get; set; } + protected string _externalTypeName; + + public ExternalType ExternalType { get; private set; } + public string FullName => TypeUtil.MakeFullName(Namespace, Name); public string NamespaceWithTopModule => TypeUtil.MakeNamespace(AssemblyBase.TopModule, Namespace); @@ -65,9 +71,34 @@ namespace Luban.Job.Common.Defs return Tags != null && Tags.TryGetValue(attrName, out var value) ? value : null; } + public ExternalTypeMapper CurrentExternalTypeMapper + { + get + { + if (ExternalType == null) + { + return null; + } + return ExternalType.Mappers.Find(m => m.Lan == DefAssemblyBase.LocalAssebmly.CurrentLanguage); + } + } + public virtual void PreCompile() { } - public abstract void Compile(); + public virtual void Compile() + { + if (!string.IsNullOrEmpty(_externalTypeName)) + { + if (AssemblyBase.TryGetExternalType(_externalTypeName, out var type)) + { + this.ExternalType = type; + } + else + { + throw new Exception($"enum:'{FullName}' Ӧ externaltype:{_externalTypeName} "); + } + } + } public virtual void PostCompile() { } } diff --git a/src/Luban.Job.Common/Source/ELanguage.cs b/src/Luban.Job.Common/Source/ELanguage.cs index 3600150..054604d 100644 --- a/src/Luban.Job.Common/Source/ELanguage.cs +++ b/src/Luban.Job.Common/Source/ELanguage.cs @@ -8,7 +8,7 @@ namespace Luban.Job.Common GO, CPP, LUA, - JS, + JAVASCRIPT, TYPESCRIPT, PYTHON, ERLANG, diff --git a/src/Luban.Job.Common/Source/RawDefs/Bean.cs b/src/Luban.Job.Common/Source/RawDefs/Bean.cs index 27a6ae9..faf84b4 100644 --- a/src/Luban.Job.Common/Source/RawDefs/Bean.cs +++ b/src/Luban.Job.Common/Source/RawDefs/Bean.cs @@ -22,6 +22,8 @@ namespace Luban.Job.Common.RawDefs public string Tags { get; set; } + public string ExternalType { get; set; } + public List Fields { get; set; } = new List(); } } diff --git a/src/Luban.Job.Common/Source/RawDefs/DefinesCommon.cs b/src/Luban.Job.Common/Source/RawDefs/DefinesCommon.cs index 289c868..1997345 100644 --- a/src/Luban.Job.Common/Source/RawDefs/DefinesCommon.cs +++ b/src/Luban.Job.Common/Source/RawDefs/DefinesCommon.cs @@ -10,10 +10,12 @@ namespace Luban.Job.Common.RawDefs { public string TopModule { get; set; } = ""; - public HashSet ExternalSelectors { get; set; } = new HashSet(); + public HashSet ExternalSelectors { get; set; } = new(); - public List Beans { get; set; } = new List(); + public Dictionary ExternalTypes { get; set; } = new(); - public List Enums { get; set; } = new List(); + public List Beans { get; set; } = new(); + + public List Enums { get; set; } = new(); } } diff --git a/src/Luban.Job.Common/Source/RawDefs/ExternalType.cs b/src/Luban.Job.Common/Source/RawDefs/ExternalType.cs new file mode 100644 index 0000000..0d61cfa --- /dev/null +++ b/src/Luban.Job.Common/Source/RawDefs/ExternalType.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Luban.Job.Common.RawDefs +{ + + public class ExternalTypeMapper + { + public string Selector { get; set; } + + public ELanguage Lan { get; set; } + + public string TypeName { get; set; } + } + + public class ExternalType + { + public string Name { get; set; } + + public List Mappers { get; set; } = new List(); + } +} diff --git a/src/Luban.Job.Common/Source/RawDefs/PEnum.cs b/src/Luban.Job.Common/Source/RawDefs/PEnum.cs index fa85657..5c61175 100644 --- a/src/Luban.Job.Common/Source/RawDefs/PEnum.cs +++ b/src/Luban.Job.Common/Source/RawDefs/PEnum.cs @@ -30,6 +30,8 @@ namespace Luban.Job.Common.RawDefs public string Tags { get; set; } + public string ExternalType { get; set; } + public List Items { get; set; } = new List(); } } diff --git a/src/Luban.Job.Common/Source/TypeVisitors/CsUnderingDefineTypeName.cs b/src/Luban.Job.Common/Source/TypeVisitors/CsUnderingDefineTypeName.cs index 607d4a3..515e5eb 100644 --- a/src/Luban.Job.Common/Source/TypeVisitors/CsUnderingDefineTypeName.cs +++ b/src/Luban.Job.Common/Source/TypeVisitors/CsUnderingDefineTypeName.cs @@ -59,7 +59,8 @@ namespace Luban.Job.Common.TypeVisitors public string Accept(TEnum type) { - return type.DefineEnum.FullName; + var mapper = type.DefineEnum.CurrentExternalTypeMapper; + return mapper != null ? mapper.TypeName : type.DefineEnum.FullName; } public string Accept(TString type) diff --git a/src/Luban.Job.Common/Source/TypeVisitors/CsUnderingDeserializeVisitor.cs b/src/Luban.Job.Common/Source/TypeVisitors/CsUnderingDeserializeVisitor.cs index a41e68d..cf6e6d4 100644 --- a/src/Luban.Job.Common/Source/TypeVisitors/CsUnderingDeserializeVisitor.cs +++ b/src/Luban.Job.Common/Source/TypeVisitors/CsUnderingDeserializeVisitor.cs @@ -59,7 +59,7 @@ namespace Luban.Job.Common.TypeVisitors public string Accept(TEnum type, string bufName, string fieldName) { - return $"{fieldName} = ({type.DefineEnum.FullName}){bufName}.ReadInt();"; + return $"{fieldName} = ({ type.Apply(CsUnderingDefineTypeName.Ins)}){bufName}.ReadInt();"; } public string Accept(TString type, string bufName, string fieldName) diff --git a/src/Luban.Job.Common/Source/Utils/DefUtil.cs b/src/Luban.Job.Common/Source/Utils/DefUtil.cs index c8a2603..acf0406 100644 --- a/src/Luban.Job.Common/Source/Utils/DefUtil.cs +++ b/src/Luban.Job.Common/Source/Utils/DefUtil.cs @@ -169,7 +169,7 @@ namespace Luban.Job.Common.Utils case ELanguage.GO: case ELanguage.CPP: case ELanguage.LUA: - case ELanguage.JS: + case ELanguage.JAVASCRIPT: case ELanguage.TYPESCRIPT: case ELanguage.PYTHON: case ELanguage.RUST: @@ -182,5 +182,30 @@ namespace Luban.Job.Common.Utils default: throw new Exception($"unknown language:{curLan}"); } } + + public static ELanguage ParseLanguage(string lan) + { + switch (lan.ToLower()) + { + case "cs": + case "c#": + case "csharp": return ELanguage.CS; + case "java": return ELanguage.JAVA; + case "go": + case "golang": return ELanguage.GO; + case "cpp": + case "c++": return ELanguage.CPP; + case "lua": return ELanguage.LUA; + case "js": + case "javascript": return ELanguage.JAVASCRIPT; + case "ts": + case "typescript": return ELanguage.TYPESCRIPT; + case "python": return ELanguage.PYTHON; + case "rust": return ELanguage.RUST; + case "pb": + case "protobuf": return ELanguage.PROTOBUF; + default: throw new ArgumentException($"parse lan:'{lan}' fail"); + } + } } } diff --git a/src/Luban.Job.Common/Source/Utils/RenderFileUtil.cs b/src/Luban.Job.Common/Source/Utils/RenderFileUtil.cs index 407a49b..938f0f2 100644 --- a/src/Luban.Job.Common/Source/Utils/RenderFileUtil.cs +++ b/src/Luban.Job.Common/Source/Utils/RenderFileUtil.cs @@ -15,7 +15,7 @@ namespace Luban.Job.Common.Utils case ELanguage.CPP: return fullName + ".cpp"; case ELanguage.GO: return fullName + ".go"; case ELanguage.LUA: return fullName.Replace('.', '_') + ".lua"; - case ELanguage.JS: return fullName + ".js"; + case ELanguage.JAVASCRIPT: return fullName + ".js"; case ELanguage.TYPESCRIPT: return fullName.Replace('.', '/') + ".ts"; case ELanguage.RUST: return fullName.Replace('.', '_') + ".rs"; case ELanguage.PROTOBUF: return fullName.Replace('.', '_') + ".pb"; @@ -69,7 +69,7 @@ namespace Luban.Job.Common.Utils { "lua", ELanguage.LUA }, { "python", ELanguage.PYTHON }, { "typescript", ELanguage.TYPESCRIPT }, - { "javascript", ELanguage.JS }, + { "javascript", ELanguage.JAVASCRIPT }, { "erlang", ELanguage.ERLANG }, { "rust", ELanguage.RUST }, { "pb", ELanguage.PROTOBUF }, diff --git a/src/Luban.Job.Db/Source/Defs/DefAssembly.cs b/src/Luban.Job.Db/Source/Defs/DefAssembly.cs index fcf67d5..1efcc38 100644 --- a/src/Luban.Job.Db/Source/Defs/DefAssembly.cs +++ b/src/Luban.Job.Db/Source/Defs/DefAssembly.cs @@ -28,11 +28,10 @@ namespace Luban.Job.Db.Defs } - public void Load(Defines defines, RemoteAgent agent) + public void Load(Defines defines, RemoteAgent agent, GenArgs args) { + LoadCommon(defines, agent, args); this.SupportNullable = false; - this.Agent = agent; - TopModule = defines.TopModule; foreach (var e in defines.Enums) { diff --git a/src/Luban.Job.Db/Source/JobController.cs b/src/Luban.Job.Db/Source/JobController.cs index f7fe10d..9ddec05 100644 --- a/src/Luban.Job.Db/Source/JobController.cs +++ b/src/Luban.Job.Db/Source/JobController.cs @@ -83,15 +83,8 @@ namespace Luban.Job.Db var rawDefines = loader.BuildDefines(); - var ass = new DefAssembly() - { - NamingConventionModule = args.NamingConventionModule, - NamingConventionType = args.NamingConventionType, - NamingConventionBeanMember = args.NamingConventionBeanMember, - NamingConventionEnumMember = args.NamingConventionEnumMember, - }; - DefAssemblyBase.LocalAssebmly = ass; - ass.Load(rawDefines, agent); + var ass = new DefAssembly(); + ass.Load(rawDefines, agent, args); List exportTypes = ass.GetExportTypes(); diff --git a/src/Luban.Job.Proto/Source/Defs/DefAssembly.cs b/src/Luban.Job.Proto/Source/Defs/DefAssembly.cs index 6294eb0..981facc 100644 --- a/src/Luban.Job.Proto/Source/Defs/DefAssembly.cs +++ b/src/Luban.Job.Proto/Source/Defs/DefAssembly.cs @@ -27,11 +27,9 @@ namespace Luban.Job.Proto.Defs } } - - public void Load(Defines defines, RemoteAgent agent) + public void Load(Defines defines, RemoteAgent agent, GenArgs args) { - this.Agent = agent; - TopModule = defines.TopModule; + LoadCommon(defines, agent, args); foreach (var e in defines.Enums) { diff --git a/src/Luban.Job.Proto/Source/JobController.cs b/src/Luban.Job.Proto/Source/JobController.cs index 9cffb78..cc2fed1 100644 --- a/src/Luban.Job.Proto/Source/JobController.cs +++ b/src/Luban.Job.Proto/Source/JobController.cs @@ -87,19 +87,9 @@ namespace Luban.Job.Proto var rawDefines = loader.BuildDefines(); - var ass = new DefAssembly() - { - CsUseUnityVectors = args.CsUseUnityVectors, + var ass = new DefAssembly(); - NamingConventionModule = args.NamingConventionModule, - NamingConventionType = args.NamingConventionType, - NamingConventionBeanMember = args.NamingConventionBeanMember, - NamingConventionEnumMember = args.NamingConventionEnumMember, - }; - - ass.Load(rawDefines, agent); - - DefAssemblyBase.LocalAssebmly = ass; + ass.Load(rawDefines, agent, args); var targetService = args.Service;