【特性】新增cfg bean的var属性default,用于指定excel默认值
【调整】调整excel格式中bean的field定义, 字段名reference调整为ref,与xml一致main
parent
efd079939f
commit
45279810ec
|
|
@ -38,7 +38,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ExcelDataCreator : ITypeFuncVisitor<object, ExcelStream, DefAssembly, DType>
|
class ExcelDataCreator : ITypeFuncVisitor<DefField, ExcelStream, DefAssembly, DType>
|
||||||
{
|
{
|
||||||
public static ExcelDataCreator Ins { get; } = new ExcelDataCreator();
|
public static ExcelDataCreator Ins { get; } = new ExcelDataCreator();
|
||||||
|
|
||||||
|
|
@ -76,7 +76,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TBool type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TBool type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -90,12 +90,12 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DBool.ValueOf(false);
|
return field?.DefalutDtypeValue ?? DBool.ValueOf(false);
|
||||||
}
|
}
|
||||||
return DBool.ValueOf(CreateBool(d));
|
return DBool.ValueOf(CreateBool(d));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TByte type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TByte type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -108,7 +108,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DByte.Default;
|
return field?.DefalutDtypeValue ?? DByte.Default;
|
||||||
}
|
}
|
||||||
if (!byte.TryParse(d.ToString(), out byte v))
|
if (!byte.TryParse(d.ToString(), out byte v))
|
||||||
{
|
{
|
||||||
|
|
@ -117,7 +117,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return new DByte(v);
|
return new DByte(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TShort type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TShort type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -130,7 +130,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DShort.Default;
|
return field?.DefalutDtypeValue ?? DShort.Default;
|
||||||
}
|
}
|
||||||
if (!short.TryParse(d.ToString(), out short v))
|
if (!short.TryParse(d.ToString(), out short v))
|
||||||
{
|
{
|
||||||
|
|
@ -139,7 +139,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return new DShort(v);
|
return new DShort(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TFshort type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TFshort type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -152,7 +152,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DFshort.Default;
|
return field?.DefalutDtypeValue ?? DFshort.Default;
|
||||||
}
|
}
|
||||||
if (!short.TryParse(d.ToString(), out short v))
|
if (!short.TryParse(d.ToString(), out short v))
|
||||||
{
|
{
|
||||||
|
|
@ -161,7 +161,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return new DFshort(v);
|
return new DFshort(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TInt type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TInt type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -174,10 +174,10 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DInt.ValueOf(0);
|
return field?.DefalutDtypeValue ?? DInt.ValueOf(0);
|
||||||
}
|
}
|
||||||
var ds = d.ToString();
|
var ds = d.ToString();
|
||||||
if (converter is TEnum te)
|
if (field?.Remapper is TEnum te)
|
||||||
{
|
{
|
||||||
if (te.DefineEnum.TryValueByNameOrAlias(ds, out var c))
|
if (te.DefineEnum.TryValueByNameOrAlias(ds, out var c))
|
||||||
{
|
{
|
||||||
|
|
@ -191,7 +191,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return DInt.ValueOf(v);
|
return DInt.ValueOf(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TFint type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TFint type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -204,10 +204,10 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DFint.Default;
|
return field?.DefalutDtypeValue ?? DFint.Default;
|
||||||
}
|
}
|
||||||
var ds = d.ToString();
|
var ds = d.ToString();
|
||||||
if (converter is TEnum te)
|
if (field?.Remapper is TEnum te)
|
||||||
{
|
{
|
||||||
if (te.DefineEnum.TryValueByNameOrAlias(ds, out var c))
|
if (te.DefineEnum.TryValueByNameOrAlias(ds, out var c))
|
||||||
{
|
{
|
||||||
|
|
@ -221,7 +221,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return new DFint(v);
|
return new DFint(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TLong type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TLong type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -234,10 +234,10 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DLong.Default;
|
return field?.DefalutDtypeValue ?? DLong.Default;
|
||||||
}
|
}
|
||||||
var ds = d.ToString();
|
var ds = d.ToString();
|
||||||
if (converter is TEnum te)
|
if (field?.Remapper is TEnum te)
|
||||||
{
|
{
|
||||||
if (te.DefineEnum.TryValueByNameOrAlias(ds, out var c))
|
if (te.DefineEnum.TryValueByNameOrAlias(ds, out var c))
|
||||||
{
|
{
|
||||||
|
|
@ -251,7 +251,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return DLong.ValueOf(v);
|
return DLong.ValueOf(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TFlong type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TFlong type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -264,10 +264,10 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DFlong.Default;
|
return field?.DefalutDtypeValue ?? DFlong.Default;
|
||||||
}
|
}
|
||||||
var ds = d.ToString();
|
var ds = d.ToString();
|
||||||
if (converter is TEnum te)
|
if (field?.Remapper is TEnum te)
|
||||||
{
|
{
|
||||||
if (te.DefineEnum.TryValueByNameOrAlias(ds, out var c))
|
if (te.DefineEnum.TryValueByNameOrAlias(ds, out var c))
|
||||||
{
|
{
|
||||||
|
|
@ -281,7 +281,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return new DFlong(v);
|
return new DFlong(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TFloat type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TFloat type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -294,7 +294,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DFloat.ValueOf(0);
|
return field?.DefalutDtypeValue ?? DFloat.ValueOf(0);
|
||||||
}
|
}
|
||||||
if (!float.TryParse(d.ToString(), out var v))
|
if (!float.TryParse(d.ToString(), out var v))
|
||||||
{
|
{
|
||||||
|
|
@ -303,7 +303,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return DFloat.ValueOf(v);
|
return DFloat.ValueOf(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TDouble type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TDouble type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -316,7 +316,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DDouble.Default;
|
return field?.DefalutDtypeValue ?? DDouble.Default;
|
||||||
}
|
}
|
||||||
if (!double.TryParse(d.ToString(), out var v))
|
if (!double.TryParse(d.ToString(), out var v))
|
||||||
{
|
{
|
||||||
|
|
@ -325,21 +325,21 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return new DDouble(v);
|
return new DDouble(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TEnum type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TEnum type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
var d = x.Read(x.NamedMode);
|
var d = x.Read(x.NamedMode);
|
||||||
if (CheckNull(type.IsNullable, d))
|
if (CheckNull(type.IsNullable, d))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (CheckNull(type.IsNullable, d))
|
if (CheckIsDefault(type.IsNullable, d) && field?.DefalutDtypeValue != null)
|
||||||
{
|
{
|
||||||
return null;
|
return field?.DefalutDtypeValue;
|
||||||
}
|
}
|
||||||
return new DEnum(type, d.ToString().Trim());
|
return new DEnum(type, d.ToString().Trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TString type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TString type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -360,7 +360,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return DString.ValueOf(s);
|
return DString.ValueOf(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TBytes type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TBytes type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
@ -381,7 +381,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TText type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TText type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 2)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 2)
|
||||||
{
|
{
|
||||||
|
|
@ -415,11 +415,11 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
string sep = f.ActualSep;
|
string sep = f.ActualSep;
|
||||||
if (string.IsNullOrWhiteSpace(sep))
|
if (string.IsNullOrWhiteSpace(sep))
|
||||||
{
|
{
|
||||||
list.Add(f.CType.Apply(this, f.Remapper, stream, ass));
|
list.Add(f.CType.Apply(this, f, stream, ass));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
list.Add(f.CType.Apply(this, f.Remapper, new ExcelStream(stream.ReadCell(), sep, false), ass));
|
list.Add(f.CType.Apply(this, f, new ExcelStream(stream.ReadCell(), sep, false), ass));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (DataCreateException dce)
|
catch (DataCreateException dce)
|
||||||
|
|
@ -437,7 +437,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TBean type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TBean type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
var originBean = (DefBean)type.Bean;
|
var originBean = (DefBean)type.Bean;
|
||||||
|
|
||||||
|
|
@ -480,7 +480,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
|
|
||||||
// 容器类统统不支持 type.IsNullable
|
// 容器类统统不支持 type.IsNullable
|
||||||
// 因为貌似没意义?
|
// 因为貌似没意义?
|
||||||
public List<DType> ReadList(TType type, object converter, ExcelStream stream, DefAssembly ass)
|
public List<DType> ReadList(TType type, DefField field, ExcelStream stream, DefAssembly ass)
|
||||||
{
|
{
|
||||||
stream.NamedMode = false;
|
stream.NamedMode = false;
|
||||||
string sep = type is TBean bean ? ((DefBean)bean.Bean).Sep : null;
|
string sep = type is TBean bean ? ((DefBean)bean.Bean).Sep : null;
|
||||||
|
|
@ -489,32 +489,32 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(sep))
|
if (string.IsNullOrWhiteSpace(sep))
|
||||||
{
|
{
|
||||||
datas.Add(type.Apply(this, converter, stream, ass));
|
datas.Add(type.Apply(this, field, stream, ass));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
datas.Add(type.Apply(this, converter, new ExcelStream(stream.ReadCell(), sep, false), ass)); ;
|
datas.Add(type.Apply(this, field, new ExcelStream(stream.ReadCell(), sep, false), ass)); ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return datas;
|
return datas;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TArray type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TArray type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
return new DArray(type, ReadList(type.ElementType, converter, x, ass));
|
return new DArray(type, ReadList(type.ElementType, field, x, ass));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TList type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TList type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
return new DList(type, ReadList(type.ElementType, converter, x, ass));
|
return new DList(type, ReadList(type.ElementType, field, x, ass));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TSet type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TSet type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
return new DSet(type, ReadList(type.ElementType, converter, x, ass));
|
return new DSet(type, ReadList(type.ElementType, field, x, ass));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TMap type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TMap type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
x.NamedMode = false;
|
x.NamedMode = false;
|
||||||
string sep = type.ValueType is TBean bean ? ((DefBean)bean.Bean).Sep : null;
|
string sep = type.ValueType is TBean bean ? ((DefBean)bean.Bean).Sep : null;
|
||||||
|
|
@ -532,7 +532,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
return new DMap(type, datas);
|
return new DMap(type, datas);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TVector2 type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TVector2 type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -545,12 +545,12 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DVector2.Default;
|
return field?.DefalutDtypeValue ?? DVector2.Default;
|
||||||
}
|
}
|
||||||
return DataUtil.CreateVector(type, d.ToString());
|
return DataUtil.CreateVector(type, d.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TVector3 type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TVector3 type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -563,12 +563,12 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DVector3.Default;
|
return field?.DefalutDtypeValue ?? DVector3.Default;
|
||||||
}
|
}
|
||||||
return DataUtil.CreateVector(type, d.ToString());
|
return DataUtil.CreateVector(type, d.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TVector4 type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TVector4 type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
if (x.NamedMode && x.IncludeNullAndEmptySize != 1)
|
||||||
{
|
{
|
||||||
|
|
@ -581,18 +581,22 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
}
|
}
|
||||||
if (CheckIsDefault(x.NamedMode, d))
|
if (CheckIsDefault(x.NamedMode, d))
|
||||||
{
|
{
|
||||||
return DVector4.Default;
|
return field?.DefalutDtypeValue ?? DVector4.Default;
|
||||||
}
|
}
|
||||||
return DataUtil.CreateVector(type, d.ToString());
|
return DataUtil.CreateVector(type, d.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public DType Accept(TDateTime type, object converter, ExcelStream x, DefAssembly ass)
|
public DType Accept(TDateTime type, DefField field, ExcelStream x, DefAssembly ass)
|
||||||
{
|
{
|
||||||
var d = x.Read();
|
var d = x.Read();
|
||||||
if (CheckNull(type.IsNullable, d))
|
if (CheckNull(type.IsNullable, d))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
if (CheckIsDefault(x.NamedMode, d) && field?.DefalutDtypeValue != null)
|
||||||
|
{
|
||||||
|
return field?.DefalutDtypeValue;
|
||||||
|
}
|
||||||
if (d is System.DateTime datetime)
|
if (d is System.DateTime datetime)
|
||||||
{
|
{
|
||||||
return new DDateTime(datetime);
|
return new DDateTime(datetime);
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,7 @@ namespace Luban.Job.Cfg.DataCreators
|
||||||
ExcelStream stream = row.GetColumn(f.Name, sep, !f.CType.Apply(IsMultiData.Ins));
|
ExcelStream stream = row.GetColumn(f.Name, sep, !f.CType.Apply(IsMultiData.Ins));
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
list.Add(f.CType.Apply(ExcelDataCreator.Ins, f.Remapper, stream, (DefAssembly)bean.AssemblyBase));
|
list.Add(f.CType.Apply(ExcelDataCreator.Ins, f, stream, (DefAssembly)bean.AssemblyBase));
|
||||||
}
|
}
|
||||||
catch (DataCreateException dce)
|
catch (DataCreateException dce)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -400,6 +400,11 @@ namespace Luban.Job.Cfg.Defs
|
||||||
cf.Converter = attrValue;
|
cf.Converter = attrValue;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "default":
|
||||||
|
{
|
||||||
|
cf.DefaultValue = attrValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
throw new Exception($"table:'{table.Name}' file:{file.OriginFile} title:'{f.Name}' attr:'{attrs[i]}' is invalid!");
|
throw new Exception($"table:'{table.Name}' file:{file.OriginFile} title:'{f.Name}' attr:'{attrs[i]}' is invalid!");
|
||||||
|
|
@ -600,7 +605,7 @@ namespace Luban.Job.Cfg.Defs
|
||||||
new CfgField() { Name = "is_multi_rows", Type = "bool" },
|
new CfgField() { Name = "is_multi_rows", Type = "bool" },
|
||||||
new CfgField() { Name = "index", Type = "string" },
|
new CfgField() { Name = "index", Type = "string" },
|
||||||
new CfgField() { Name = "group", Type = "string" },
|
new CfgField() { Name = "group", Type = "string" },
|
||||||
new CfgField() { Name = "reference", Type = "string" },
|
new CfgField() { Name = "ref", Type = "string", IgnoreNameValidation = true },
|
||||||
new CfgField() { Name = "path", Type = "string" },
|
new CfgField() { Name = "path", Type = "string" },
|
||||||
new CfgField() { Name = "comment", Type = "string" },
|
new CfgField() { Name = "comment", Type = "string" },
|
||||||
new CfgField() { Name = "tags", Type = "string" },
|
new CfgField() { Name = "tags", Type = "string" },
|
||||||
|
|
@ -686,13 +691,14 @@ namespace Luban.Job.Cfg.Defs
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
(b.GetField("comment") as DString).Value.Trim(),
|
(b.GetField("comment") as DString).Value.Trim(),
|
||||||
(b.GetField("reference") as DString).Value.Trim(),
|
(b.GetField("ref") as DString).Value.Trim(),
|
||||||
(b.GetField("path") as DString).Value.Trim(),
|
(b.GetField("path") as DString).Value.Trim(),
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
(b.GetField("tags") as DString).Value.Trim()
|
(b.GetField("tags") as DString).Value.Trim(),
|
||||||
|
false
|
||||||
)).ToList(),
|
)).ToList(),
|
||||||
};
|
};
|
||||||
this._beans.Add(curBean);
|
this._beans.Add(curBean);
|
||||||
|
|
@ -706,9 +712,24 @@ namespace Luban.Job.Cfg.Defs
|
||||||
await LoadTableRecordDefinesFromFileAsync(dataDir);
|
await LoadTableRecordDefinesFromFileAsync(dataDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static readonly List<string> _fieldOptionalAttrs = new List<string> {
|
private static readonly List<string> _fieldOptionalAttrs = new()
|
||||||
"index", "sep", "validator", "key_validator", "value_validator",
|
{
|
||||||
"ref", "path", "range", "multi_rows", "group", "res", "convert", "comment", "tags" };
|
"index",
|
||||||
|
"sep",
|
||||||
|
"validator",
|
||||||
|
"key_validator",
|
||||||
|
"value_validator",
|
||||||
|
"ref",
|
||||||
|
"path",
|
||||||
|
"range",
|
||||||
|
"multi_rows",
|
||||||
|
"group",
|
||||||
|
"res",
|
||||||
|
"convert",
|
||||||
|
"comment",
|
||||||
|
"tags",
|
||||||
|
"default"
|
||||||
|
};
|
||||||
|
|
||||||
private static readonly List<string> _fieldRequireAttrs = new List<string> { "name", "type" };
|
private static readonly List<string> _fieldRequireAttrs = new List<string> { "name", "type" };
|
||||||
|
|
||||||
|
|
@ -731,12 +752,13 @@ namespace Luban.Job.Cfg.Defs
|
||||||
XmlUtil.GetOptionalAttribute(e, "key_validator"),
|
XmlUtil.GetOptionalAttribute(e, "key_validator"),
|
||||||
XmlUtil.GetOptionalAttribute(e, "value_validator"),
|
XmlUtil.GetOptionalAttribute(e, "value_validator"),
|
||||||
XmlUtil.GetOptionalAttribute(e, "validator"),
|
XmlUtil.GetOptionalAttribute(e, "validator"),
|
||||||
XmlUtil.GetOptionalAttribute(e, "tags")
|
XmlUtil.GetOptionalAttribute(e, "tags"),
|
||||||
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Field CreateField(string name, string type, string index, string sep, bool isMultiRow, string group, string resource, string converter,
|
private Field CreateField(string name, string type, string index, string sep, bool isMultiRow, string group, string resource, string converter,
|
||||||
string comment, string refs, string path, string range, string keyValidator, string valueValidator, string validator, string tags)
|
string comment, string refs, string path, string range, string keyValidator, string valueValidator, string validator, string tags, bool ignoreNameValidation)
|
||||||
{
|
{
|
||||||
var f = new CfgField()
|
var f = new CfgField()
|
||||||
{
|
{
|
||||||
|
|
@ -749,6 +771,7 @@ namespace Luban.Job.Cfg.Defs
|
||||||
Converter = converter,
|
Converter = converter,
|
||||||
Comment = comment,
|
Comment = comment,
|
||||||
Tags = tags,
|
Tags = tags,
|
||||||
|
IgnoreNameValidation = ignoreNameValidation,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 字段与table的默认组不一样。
|
// 字段与table的默认组不一样。
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
using Luban.Common.Utils;
|
using Luban.Common.Utils;
|
||||||
|
using Luban.Job.Cfg.DataCreators;
|
||||||
|
using Luban.Job.Cfg.Datas;
|
||||||
using Luban.Job.Cfg.RawDefs;
|
using Luban.Job.Cfg.RawDefs;
|
||||||
using Luban.Job.Cfg.Validators;
|
using Luban.Job.Cfg.Validators;
|
||||||
using Luban.Job.Common.Defs;
|
using Luban.Job.Common.Defs;
|
||||||
|
|
@ -148,6 +150,10 @@ namespace Luban.Job.Cfg.Defs
|
||||||
|
|
||||||
public bool HasRecursiveText => HasRecursiveRef;
|
public bool HasRecursiveText => HasRecursiveRef;
|
||||||
|
|
||||||
|
public string DefaultValue { get; }
|
||||||
|
|
||||||
|
public DType DefalutDtypeValue { get; private set; }
|
||||||
|
|
||||||
public DefField(DefTypeBase host, CfgField f, int idOffset) : base(host, f, idOffset)
|
public DefField(DefTypeBase host, CfgField f, int idOffset) : base(host, f, idOffset)
|
||||||
{
|
{
|
||||||
Index = f.Index;
|
Index = f.Index;
|
||||||
|
|
@ -159,6 +165,7 @@ namespace Luban.Job.Cfg.Defs
|
||||||
this.ValueValidators.AddRange(f.ValueValidators.Select(v => ValidatorFactory.Create(v)));
|
this.ValueValidators.AddRange(f.ValueValidators.Select(v => ValidatorFactory.Create(v)));
|
||||||
this.Groups = f.Groups;
|
this.Groups = f.Groups;
|
||||||
this.RawDefine = f;
|
this.RawDefine = f;
|
||||||
|
this.DefaultValue = f.DefaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Compile()
|
public override void Compile()
|
||||||
|
|
@ -179,6 +186,11 @@ namespace Luban.Job.Cfg.Defs
|
||||||
v.Compile(this);
|
v.Compile(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(this.DefaultValue))
|
||||||
|
{
|
||||||
|
this.DefalutDtypeValue = CType.Apply(StringDataCreator.Ins, this.DefaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
switch (CType)
|
switch (CType)
|
||||||
{
|
{
|
||||||
case TArray t:
|
case TArray t:
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ namespace Luban.Job.Cfg.RawDefs
|
||||||
|
|
||||||
public string Converter { get; set; } = "";
|
public string Converter { get; set; } = "";
|
||||||
|
|
||||||
|
public string DefaultValue { get; set; } = "";
|
||||||
|
|
||||||
public List<string> Groups { get; set; } = new List<string>();
|
public List<string> Groups { get; set; } = new List<string>();
|
||||||
|
|
||||||
public List<Validator> KeyValidators { get; } = new List<Validator>();
|
public List<Validator> KeyValidators { get; } = new List<Validator>();
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,8 @@ namespace Luban.Job.Common.Defs
|
||||||
|
|
||||||
public Dictionary<string, string> Tags { get; }
|
public Dictionary<string, string> Tags { get; }
|
||||||
|
|
||||||
|
public bool IgnoreNameValidation { get; set; }
|
||||||
|
|
||||||
public bool HasTag(string attrName)
|
public bool HasTag(string attrName)
|
||||||
{
|
{
|
||||||
return Tags != null && Tags.ContainsKey(attrName);
|
return Tags != null && Tags.ContainsKey(attrName);
|
||||||
|
|
@ -92,6 +94,7 @@ namespace Luban.Job.Common.Defs
|
||||||
Type = f.Type;
|
Type = f.Type;
|
||||||
Comment = f.Comment;
|
Comment = f.Comment;
|
||||||
Tags = DefUtil.ParseAttrs(f.Tags);
|
Tags = DefUtil.ParseAttrs(f.Tags);
|
||||||
|
IgnoreNameValidation = f.IgnoreNameValidation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Compile()
|
public virtual void Compile()
|
||||||
|
|
@ -101,7 +104,7 @@ namespace Luban.Job.Common.Defs
|
||||||
{
|
{
|
||||||
throw new Exception($"type:'{HostType.FullName}' field:'{Name}' id:{Id} 超出范围");
|
throw new Exception($"type:'{HostType.FullName}' field:'{Name}' id:{Id} 超出范围");
|
||||||
}
|
}
|
||||||
if (!TypeUtil.IsValidName(Name))
|
if (!IgnoreNameValidation && !TypeUtil.IsValidName(Name))
|
||||||
{
|
{
|
||||||
throw new Exception($"type:'{HostType.FullName}' filed name:'{Name}' is reserved");
|
throw new Exception($"type:'{HostType.FullName}' filed name:'{Name}' is reserved");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,5 +12,7 @@ namespace Luban.Job.Common.RawDefs
|
||||||
public string Comment { get; set; }
|
public string Comment { get; set; }
|
||||||
|
|
||||||
public string Tags { get; set; }
|
public string Tags { get; set; }
|
||||||
|
|
||||||
|
public bool IgnoreNameValidation { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue