【重构】重构计算gen_type对应ELangua的方式,重构计算生成数据文件后缀的方式

【修复】修复类型名为 xx_zz_ 包含独立的_时,UpperCaseFirstChar空白名字导致的异常
main
walon 2021-08-27 12:00:14 +08:00
parent f6e4f6377a
commit f31172c850
4 changed files with 63 additions and 48 deletions

View File

@ -205,12 +205,12 @@ namespace Luban.Common.Utils
public static string ToCsStyleName(string orginName) public static string ToCsStyleName(string orginName)
{ {
return string.Join("", orginName.Split('_').Select(c => UpperCaseFirstChar(c))); return string.Join("", orginName.Split('_').Where(s => !string.IsNullOrWhiteSpace(s)).Select(c => UpperCaseFirstChar(c)));
} }
public static string ToJavaStyleName(string orginName) public static string ToJavaStyleName(string orginName)
{ {
var words = orginName.Split('_'); var words = orginName.Split('_').Where(s => !string.IsNullOrWhiteSpace(s)).ToArray();
var s = new StringBuilder(); var s = new StringBuilder();
s.Append(words[0]); s.Append(words[0]);
for (int i = 1; i < words.Length; i++) for (int i = 1; i < words.Length; i++)
@ -222,7 +222,7 @@ namespace Luban.Common.Utils
public static string ToJavaGetterName(string orginName) public static string ToJavaGetterName(string orginName)
{ {
var words = orginName.Split('_'); var words = orginName.Split('_').Where(s => !string.IsNullOrWhiteSpace(s)).ToArray();
var s = new StringBuilder("get"); var s = new StringBuilder("get");
foreach (var word in words) foreach (var word in words)
{ {

View File

@ -98,47 +98,6 @@ namespace Luban.Job.Cfg
} }
} }
private ELanguage GetLanguage(string genType)
{
switch (genType)
{
case "code_cs_bin":
case "code_cs_json":
case "code_cs_unity_json": return ELanguage.CS;
case "code_java_bin":
case "code_java_json": return ELanguage.JAVA;
case "code_go_bin":
case "code_go_json": return ELanguage.GO;
case "code_cpp_bin": return ELanguage.CPP;
case "code_lua_bin":
case "code_lua_lua": return ELanguage.LUA;
case "code_python3_json": return ELanguage.PYTHON;
case "code_typescript_bin":
case "code_typescript_json": return ELanguage.TYPESCRIPT;
case "code_cpp_ue_editor":
case "code_cpp_ue_bp": return ELanguage.CPP;
case "code_cs_unity_editor": return ELanguage.CS;
default: throw new ArgumentException($"not support output data type:{genType}");
}
}
private string GetOutputFileSuffix(string genType)
{
switch (genType)
{
case "data_bin": return "bin";
case "data_json":
case "data_json2": return "json";
case "data_lua": return "lua";
default: throw new Exception($"not support output data type:{genType}");
}
}
private string GetOutputFileName(string genType, string fileName)
{
return $"{(genType.EndsWith("lua") ? fileName.Replace('.', '_') : fileName)}.{GetOutputFileSuffix(genType)}";
}
private static bool TryParseArg(List<string> args, out GenArgs options, out string errMsg) private static bool TryParseArg(List<string> args, out GenArgs options, out string errMsg)
{ {
var helpWriter = new StringWriter(); var helpWriter = new StringWriter();
@ -475,7 +434,7 @@ namespace Luban.Job.Cfg
{ {
string genType = ctx.GenType; string genType = ctx.GenType;
ctx.Render = CreateCodeRender(genType); ctx.Render = CreateCodeRender(genType);
ctx.Lan = GetLanguage(genType); ctx.Lan = RenderFileUtil.GetLanguage(genType);
foreach (var c in ctx.ExportTypes) foreach (var c in ctx.ExportTypes)
{ {
ctx.Tasks.Add(Task.Run(() => ctx.Tasks.Add(Task.Run(() =>
@ -535,7 +494,7 @@ namespace Luban.Job.Cfg
string genType = ctx.GenType; string genType = ctx.GenType;
var args = ctx.GenArgs; var args = ctx.GenArgs;
ctx.Render = CreateCodeRender(genType); ctx.Render = CreateCodeRender(genType);
ctx.Lan = GetLanguage(genType); ctx.Lan = RenderFileUtil.GetLanguage(genType);
var lines = new List<string>(10000); var lines = new List<string>(10000);
Action<List<string>> preContent = (fileContent) => Action<List<string>> preContent = (fileContent) =>
@ -589,7 +548,7 @@ namespace Luban.Job.Cfg
{ {
string genType = ctx.GenType; string genType = ctx.GenType;
ctx.Render = CreateCodeRender(genType); ctx.Render = CreateCodeRender(genType);
ctx.Lan = GetLanguage(genType); ctx.Lan = RenderFileUtil.GetLanguage(genType);
var lines = new List<string>(10000); var lines = new List<string>(10000);
static void PreContent(List<string> fileContent) static void PreContent(List<string> fileContent)
@ -769,7 +728,7 @@ namespace {ctx.TopModule}
{ {
ctx.Tasks.Add(Task.Run(() => ctx.Tasks.Add(Task.Run(() =>
{ {
var file = GetOutputFileName(genType, table.OutputDataFile); var file = RenderFileUtil.GetOutputFileName(genType, table.OutputDataFile);
var records = ctx.Assembly.GetTableExportDataList(table); var records = ctx.Assembly.GetTableExportDataList(table);
if (!FileRecordCacheManager.Ins.TryGetRecordOutputData(table, records, genType, out string md5)) if (!FileRecordCacheManager.Ins.TryGetRecordOutputData(table, records, genType, out string md5))
{ {

View File

@ -10,5 +10,6 @@ namespace Luban.Job.Common
JS, JS,
TYPESCRIPT, TYPESCRIPT,
PYTHON, PYTHON,
ERLANG,
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
namespace Luban.Job.Common.Utils namespace Luban.Job.Common.Utils
{ {
@ -84,5 +85,59 @@ namespace Luban.Job.Common.Utils
} }
} }
} }
private readonly static Dictionary<string, ELanguage> s_name2Lans = new()
{
{ "cs", ELanguage.CS },
{ "java", ELanguage.JAVA },
{ "go", ELanguage.GO },
{ "cpp", ELanguage.CPP },
{ "lua", ELanguage.LUA },
{ "python", ELanguage.PYTHON },
{ "typescript", ELanguage.TYPESCRIPT },
{ "javascript", ELanguage.JS },
{ "erlang", ELanguage.ERLANG },
};
public static ELanguage GetLanguage(string genType)
{
foreach (var (name, lan) in s_name2Lans)
{
if (genType.Contains(name))
{
return lan;
}
}
throw new ArgumentException($"not support output data type:{genType}");
}
private readonly static Dictionary<string, string> s_name2Suxxifx = new()
{
{ "json", "json" },
{ "lua", "lua" },
{ "bin", "bin" },
{ "xml", "xml" },
{ "yaml", "yml" },
{ "yml", "yml" },
{ "erlang", "erl" },
{ "erl", "erl" },
};
public static string GetOutputFileSuffix(string genType)
{
foreach (var (name, suffix) in s_name2Suxxifx)
{
if (genType.Contains(name))
{
return suffix;
}
}
throw new Exception($"not support output data type:{genType}");
}
public static string GetOutputFileName(string genType, string fileName)
{
return $"{(genType.EndsWith("lua") ? fileName.Replace('.', '_') : fileName)}.{GetOutputFileSuffix(genType)}";
}
} }
} }