【重构】重构cfg记录tags处理

main
walon 2021-10-11 14:28:05 +08:00
parent 4876baabf7
commit dd5bae123f
9 changed files with 46 additions and 17 deletions

View File

@ -36,7 +36,7 @@
制作本地化映射表
![pipeline](docs/images/examples/c_22.jpg)
![pipeline](images/examples/c_22.jpg)
映射到英语后的导出数据(只截取了部分数据)为
```json

View File

@ -690,9 +690,9 @@ namespace Luban.Job.Cfg.DataSources.Excel
{
foreach (var recordNamedRow in NamedRow.CreateMultiRowNamedRow(this._rowColumns, this._rootTitle, type))
{
bool isTest = DataUtil.IsTestTag(GetRowTag(recordNamedRow.Rows[0]));
var tags = DataUtil.ParseTags(GetRowTag(recordNamedRow.Rows[0]));
var data = (DBean)ExcelNamedRowDataCreator.Ins.ReadExcel(recordNamedRow, type);
yield return new Record(data, RawUrl, isTest);
yield return new Record(data, RawUrl, tags);
}
}
}

View File

@ -27,7 +27,7 @@ namespace Luban.Job.Cfg.DataSources.Json
public override Record ReadOne(TBean type)
{
bool isTest = false;
List<string> tags;
if (_data.TryGetProperty(TAG_KEY, out var tagEle))
{
var tagName = tagEle.GetString();
@ -35,11 +35,15 @@ namespace Luban.Job.Cfg.DataSources.Json
{
return null;
}
isTest = DataUtil.IsTestTag(tagName);
tags = DataUtil.ParseTags(tagName);
}
else
{
tags = null;
}
var data = (DBean)type.Apply(JsonDataCreator.Ins, _data, (DefAssembly)type.Bean.AssemblyBase);
return new Record(data, RawUrl, isTest);
return new Record(data, RawUrl, tags);
}
}
}

View File

@ -53,8 +53,8 @@ namespace Luban.Job.Cfg.DataSources.Lua
return null;
}
var data = (DBean)type.Apply(LuaDataCreator.Ins, table, (DefAssembly)type.Bean.AssemblyBase);
var isTest = DataUtil.IsTestTag(tagName);
return new Record(data, RawUrl, isTest);
var tags = DataUtil.ParseTags(tagName);
return new Record(data, RawUrl, tags);
}
}
}

View File

@ -33,8 +33,8 @@ namespace Luban.Job.Cfg.DataSources.Xml
return null;
}
var data = (DBean)type.Apply(XmlDataCreator.Ins, _doc, (DefAssembly)type.Bean.AssemblyBase);
bool isTest = DataUtil.IsTestTag(tagName);
return new Record(data, RawUrl, isTest);
var tags = DataUtil.ParseTags(tagName);
return new Record(data, RawUrl, tags);
}
}
}

View File

@ -58,8 +58,8 @@ namespace Luban.Job.Cfg.DataSources.Yaml
return null;
}
var data = (DBean)type.Apply(YamlDataCreator.Ins, _root, (DefAssembly)type.Bean.AssemblyBase);
bool isTest = DataUtil.IsTestTag(tagName);
return new Record(data, RawUrl, isTest);
var tags = DataUtil.ParseTags(tagName);
return new Record(data, RawUrl, tags);
}
}
}

View File

@ -1,4 +1,7 @@
namespace Luban.Job.Cfg.Datas
using Luban.Job.Cfg.Utils;
using System.Collections.Generic;
namespace Luban.Job.Cfg.Datas
{
public class Record
{
@ -6,15 +9,17 @@
public string Source { get; }
public List<string> Tags { get; }
public int Index { get; set; }
public bool IsTest { get; }
public bool IsTest => Tags != null && DataUtil.IsTestTag(Tags);
public Record(DBean data, string source, bool isTest)
public Record(DBean data, string source, List<string> tags)
{
Data = data;
Source = source;
IsTest = isTest;
Tags = tags;
}
}
}

View File

@ -35,6 +35,9 @@ namespace Luban.Job.Cfg
[Option("export_test_data", Required = false, HelpText = "export test data")]
public bool ExportTestData { get; set; } = false;
[Option("export_tag_filter", Required = false, HelpText = "export tag filter")]
public string ExportTagFilter { get; set; } = "";
[Option('t', "l10n_timezone", Required = false, HelpText = "timezone")]
public string TimeZone { get; set; }

View File

@ -1,7 +1,9 @@
using Luban.Job.Cfg.Datas;
using Luban.Job.Common.Types;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace Luban.Job.Cfg.Utils
{
@ -122,7 +124,7 @@ namespace Luban.Job.Cfg.Utils
);
}
public static bool IsTestTag(string tagName)
private static bool IsTestTag(string tagName)
{
return !string.IsNullOrEmpty(tagName) &&
(tagName.Equals("test", System.StringComparison.OrdinalIgnoreCase)
@ -130,6 +132,21 @@ namespace Luban.Job.Cfg.Utils
);
}
public static bool IsTestTag(List<string> tagNames)
{
return tagNames.Any(IsTestTag);
}
public static List<string> ParseTags(string rawTagStr)
{
if (string.IsNullOrWhiteSpace(rawTagStr))
{
return null;
}
var tags = new List<string>(rawTagStr.Split(',').Select(t => t.Trim()).Where(t => !string.IsNullOrEmpty(t)));
return tags.Count > 0 ? tags : null;
}
//public static string Data2String(DType data)
//{
// var s = new StringBuilder();