mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-04-06 06:11:45 +00:00
Split header skipper and header row into separate properties
This commit is contained in:
@@ -132,6 +132,8 @@ namespace SabreTools.Data.Extensions
|
||||
cloneHeader.ForceNodump = selfHeader.ForceNodump;
|
||||
cloneHeader.ForcePacking = selfHeader.ForcePacking;
|
||||
cloneHeader.ForceZipping = selfHeader.ForceZipping;
|
||||
cloneHeader.HeaderRow = selfHeader.HeaderRow;
|
||||
cloneHeader.HeaderSkipper = selfHeader.HeaderSkipper;
|
||||
cloneHeader.Homepage = selfHeader.Homepage;
|
||||
cloneHeader.Id = selfHeader.Id;
|
||||
cloneHeader.LockBiosMode = selfHeader.LockBiosMode;
|
||||
|
||||
@@ -44,6 +44,10 @@ namespace SabreTools.Data.Models.Metadata
|
||||
/// <remarks>(yes|no) "yes"</remarks>
|
||||
public bool? ForceZipping { get; set; }
|
||||
|
||||
public string[]? HeaderRow { get; set; }
|
||||
|
||||
public string? HeaderSkipper { get; set; }
|
||||
|
||||
public string? Homepage { get; set; }
|
||||
|
||||
public string? Id { get; set; }
|
||||
@@ -100,9 +104,6 @@ namespace SabreTools.Data.Models.Metadata
|
||||
[NoFilter]
|
||||
public const string CanOpenKey = "canOpen";
|
||||
|
||||
/// <remarks>string, string[]</remarks>
|
||||
public const string HeaderKey = "header";
|
||||
|
||||
/// TODO: This needs an internal model OR mapping to fields
|
||||
/// <remarks>Search</remarks>
|
||||
[NoFilter]
|
||||
|
||||
@@ -215,7 +215,8 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
ForceNodump = Data.Models.Metadata.NodumpFlag.Required,
|
||||
ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
|
||||
ForceZipping = true,
|
||||
[Data.Models.Metadata.Header.HeaderKey] = "header",
|
||||
HeaderRow = ["header"],
|
||||
HeaderSkipper = "header",
|
||||
Homepage = "homepage",
|
||||
Id = "id",
|
||||
[Data.Models.Metadata.Header.ImagesKey] = images,
|
||||
@@ -1022,7 +1023,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, datHeader.ForceNodump);
|
||||
Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, datHeader.ForcePacking);
|
||||
Assert.True(datHeader.ForceZipping);
|
||||
Assert.Equal("header", datHeader.ReadString(Data.Models.Metadata.Header.HeaderKey));
|
||||
Assert.Equal("header", datHeader.HeaderSkipper);
|
||||
Assert.Equal("homepage", datHeader.Homepage);
|
||||
Assert.Equal("id", datHeader.Id);
|
||||
Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.ImagesKey));
|
||||
|
||||
@@ -367,7 +367,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, header.ForceNodump);
|
||||
Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, header.ForcePacking);
|
||||
Assert.True(header.ForceZipping);
|
||||
Assert.Equal("header", header.ReadString(Data.Models.Metadata.Header.HeaderKey));
|
||||
Assert.Equal("header", header.HeaderSkipper);
|
||||
Assert.Equal("homepage", header.Homepage);
|
||||
Assert.Equal("id", header.Id);
|
||||
Assert.NotNull(header.Read<Data.Models.OfflineList.Images>(Data.Models.Metadata.Header.ImagesKey));
|
||||
@@ -395,6 +395,11 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("type", header.Type);
|
||||
Assert.Equal("url", header.Url);
|
||||
Assert.Equal("version", header.Version);
|
||||
|
||||
string[]? headerRowTitles = header.HeaderRow;
|
||||
Assert.NotNull(headerRowTitles);
|
||||
string? headerRowTitle = Assert.Single(headerRowTitles);
|
||||
Assert.Equal("header", headerRowTitle);
|
||||
}
|
||||
|
||||
private static void ValidateMetadataMachine(Data.Models.Metadata.Machine machine)
|
||||
|
||||
@@ -120,8 +120,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
Header.ForcePacking = header.ForcePacking;
|
||||
if (Header.ForceZipping is null)
|
||||
Header.ForceZipping = header.ForceZipping;
|
||||
if (Header.ReadString(Data.Models.Metadata.Header.HeaderKey) is null)
|
||||
Header.Write<string?>(Data.Models.Metadata.Header.HeaderKey, header.ReadString(Data.Models.Metadata.Header.HeaderKey));
|
||||
if (Header.HeaderSkipper is null)
|
||||
Header.HeaderSkipper = header.HeaderSkipper;
|
||||
if (Header.Homepage is null)
|
||||
Header.Homepage = header.Homepage;
|
||||
if (Header.Id is null)
|
||||
|
||||
@@ -127,6 +127,18 @@ namespace SabreTools.Metadata.DatFiles
|
||||
set => _internal.ForceZipping = value;
|
||||
}
|
||||
|
||||
public string[]? HeaderRow
|
||||
{
|
||||
get => _internal.HeaderRow;
|
||||
set => _internal.HeaderRow = value;
|
||||
}
|
||||
|
||||
public string? HeaderSkipper
|
||||
{
|
||||
get => _internal.HeaderSkipper;
|
||||
set => _internal.HeaderSkipper = value;
|
||||
}
|
||||
|
||||
public string? Homepage
|
||||
{
|
||||
get => _internal.Homepage;
|
||||
|
||||
@@ -813,6 +813,10 @@ namespace SabreTools.Metadata.Filter
|
||||
case Header item when fieldName == "forcezipping":
|
||||
checkValue = item.ForceZipping.FromYesNo();
|
||||
return true;
|
||||
// Header.HeaderRow is intentionally skipped
|
||||
case Header item when fieldName == "header" || fieldName == "headerskipper" || fieldName == "skipper":
|
||||
checkValue = item.HeaderSkipper;
|
||||
return true;
|
||||
case Header item when fieldName == "homepage":
|
||||
checkValue = item.Homepage;
|
||||
return true;
|
||||
|
||||
@@ -204,6 +204,8 @@ namespace SabreTools.Metadata
|
||||
return false;
|
||||
if (selfHeader.ForceZipping != otherHeader.ForceZipping)
|
||||
return false;
|
||||
if (selfHeader.HeaderSkipper != otherHeader.HeaderSkipper)
|
||||
return false;
|
||||
if (selfHeader.Homepage != otherHeader.Homepage)
|
||||
return false;
|
||||
if (selfHeader.Id != otherHeader.Id)
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
{
|
||||
var metadataFile = new MetadataFile
|
||||
{
|
||||
Header = item.ReadStringArray(Data.Models.Metadata.Header.HeaderKey),
|
||||
Header = item.HeaderRow,
|
||||
};
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
{
|
||||
var header = new Data.Models.Metadata.Header
|
||||
{
|
||||
[Data.Models.Metadata.Header.HeaderKey] = item.Header,
|
||||
HeaderRow = item.Header,
|
||||
};
|
||||
return header;
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
Homepage = item.Homepage,
|
||||
Url = item.Url,
|
||||
Comment = item.Comment,
|
||||
Header = item.ReadString(Data.Models.Metadata.Header.HeaderKey),
|
||||
Header = item.HeaderSkipper,
|
||||
Type = item.Type,
|
||||
ForceMerging = item.ForceMerging,
|
||||
ForceZipping = item.ForceZipping,
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
Homepage = item.Homepage,
|
||||
Url = item.Url,
|
||||
Comment = item.Comment,
|
||||
[Data.Models.Metadata.Header.HeaderKey] = item.Header,
|
||||
HeaderSkipper = item.Header,
|
||||
Type = item.Type,
|
||||
ForceMerging = item.ForceMerging,
|
||||
ForceZipping = item.ForceZipping,
|
||||
|
||||
@@ -56,16 +56,14 @@ namespace SabreTools.Serialization.CrossModel
|
||||
Type = item.Type,
|
||||
};
|
||||
|
||||
string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey);
|
||||
|
||||
if (headerVal is not null
|
||||
if (item.HeaderSkipper is not null
|
||||
|| item.ForceMerging is not Data.Models.Metadata.MergingFlag.None
|
||||
|| item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None
|
||||
|| item.ForcePacking is not Data.Models.Metadata.PackingFlag.None)
|
||||
{
|
||||
header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro();
|
||||
if (headerVal is not null)
|
||||
header.ClrMamePro.Header = headerVal;
|
||||
if (item.HeaderSkipper is not null)
|
||||
header.ClrMamePro.Header = item.HeaderSkipper;
|
||||
if (item.ForceMerging is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.ClrMamePro.ForceMerging = item.ForceMerging;
|
||||
if (item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None)
|
||||
|
||||
@@ -70,7 +70,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
if (item.ClrMamePro is not null)
|
||||
{
|
||||
header[Data.Models.Metadata.Header.HeaderKey] = item.ClrMamePro.Header;
|
||||
header.HeaderSkipper = item.ClrMamePro.Header;
|
||||
header.ForceMerging = item.ClrMamePro.ForceMerging;
|
||||
header.ForceNodump = item.ClrMamePro.ForceNodump;
|
||||
header.ForcePacking = item.ClrMamePro.ForcePacking;
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
{
|
||||
var metadataFile = new MetadataFile
|
||||
{
|
||||
Header = item.ReadStringArray(Data.Models.Metadata.Header.HeaderKey),
|
||||
Header = item.HeaderRow,
|
||||
};
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
{
|
||||
var header = new Data.Models.Metadata.Header
|
||||
{
|
||||
[Data.Models.Metadata.Header.HeaderKey] = item.Header,
|
||||
HeaderRow = item.Header,
|
||||
};
|
||||
|
||||
if (item.Row is not null && item.Row.Length > 0)
|
||||
|
||||
Reference in New Issue
Block a user