Migrate most header string keys to properties

This commit is contained in:
Matt Nadareski
2026-04-02 22:01:42 -04:00
parent 0df6378713
commit 49d3d9c096
31 changed files with 482 additions and 292 deletions

View File

@@ -90,28 +90,28 @@ namespace SabreTools.Metadata.DatFiles
Header.Write<Data.Models.OfflineList.Search?>(Data.Models.Metadata.Header.SearchKey, search);
// Selectively set all possible fields -- TODO: Figure out how to make this less manual
if (Header.ReadString(Data.Models.Metadata.Header.AuthorKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.AuthorKey, header.ReadString(Data.Models.Metadata.Header.AuthorKey));
if (Header.Author is null)
Header.Author = header.Author;
if (Header.BiosMode == MergingFlag.None)
Header.BiosMode = header.BiosMode;
if (Header.ReadString(Data.Models.Metadata.Header.BuildKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.BuildKey, header.ReadString(Data.Models.Metadata.Header.BuildKey));
if (Header.ReadString(Data.Models.Metadata.Header.CategoryKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.CategoryKey, header.ReadString(Data.Models.Metadata.Header.CategoryKey));
if (Header.ReadString(Data.Models.Metadata.Header.CommentKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.CommentKey, header.ReadString(Data.Models.Metadata.Header.CommentKey));
if (Header.ReadString(Data.Models.Metadata.Header.DateKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.DateKey, header.ReadString(Data.Models.Metadata.Header.DateKey));
if (Header.ReadString(Data.Models.Metadata.Header.DatVersionKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.DatVersionKey, header.ReadString(Data.Models.Metadata.Header.DatVersionKey));
if (Header.Build is null)
Header.Build = header.Build;
if (Header.Category is null)
Header.Category = header.Category;
if (Header.Comment is null)
Header.Comment = header.Comment;
if (Header.Date is null)
Header.Date = header.Date;
if (Header.DatVersion is null)
Header.DatVersion = header.DatVersion;
if (Header.Debug is null)
Header.Debug = header.Debug;
if (Header.Description is null)
Header.Description = header.Description;
if (Header.ReadString(Data.Models.Metadata.Header.EmailKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.EmailKey, header.ReadString(Data.Models.Metadata.Header.EmailKey));
if (Header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.EmulatorVersionKey, header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey));
if (Header.Email is null)
Header.Email = header.Email;
if (Header.EmulatorVersion is null)
Header.EmulatorVersion = header.EmulatorVersion;
if (Header.ForceMerging == MergingFlag.None)
Header.ForceMerging = header.ForceMerging;
if (Header.ForceNodump == NodumpFlag.None)
@@ -122,10 +122,10 @@ namespace SabreTools.Metadata.DatFiles
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.ReadString(Data.Models.Metadata.Header.HomepageKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.HomepageKey, header.ReadString(Data.Models.Metadata.Header.HomepageKey));
if (Header.ReadString(Data.Models.Metadata.Header.IdKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.IdKey, header.ReadString(Data.Models.Metadata.Header.IdKey));
if (Header.Homepage is null)
Header.Homepage = header.Homepage;
if (Header.Id is null)
Header.Id = header.Id;
if (Header.ReadString(Data.Models.Metadata.Header.ImFolderKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.ImFolderKey, header.ReadString(Data.Models.Metadata.Header.ImFolderKey));
if (Header.LockBiosMode is null)
@@ -134,22 +134,22 @@ namespace SabreTools.Metadata.DatFiles
Header.LockRomMode = header.LockRomMode;
if (Header.LockSampleMode is null)
Header.LockSampleMode = header.LockSampleMode;
if (Header.ReadString(Data.Models.Metadata.Header.MameConfigKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.MameConfigKey, header.ReadString(Data.Models.Metadata.Header.MameConfigKey));
if (Header.MameConfig is null)
Header.MameConfig = header.MameConfig;
if (Header.Name is null)
Header.Name = header.Name;
if (Header.ReadString(Data.Models.Metadata.Header.NotesKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.NotesKey, header.ReadString(Data.Models.Metadata.Header.NotesKey));
if (Header.ReadString(Data.Models.Metadata.Header.PluginKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.PluginKey, header.ReadString(Data.Models.Metadata.Header.PluginKey));
if (Header.ReadString(Data.Models.Metadata.Header.RefNameKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.RefNameKey, header.ReadString(Data.Models.Metadata.Header.RefNameKey));
if (Header.Notes is null)
Header.Notes = header.Notes;
if (Header.Plugin is null)
Header.Plugin = header.Plugin;
if (Header.RefName is null)
Header.RefName = header.RefName;
if (Header.RomMode == MergingFlag.None)
Header.RomMode = header.RomMode;
if (Header.ReadString(Data.Models.Metadata.Header.RomTitleKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.RomTitleKey, header.ReadString(Data.Models.Metadata.Header.RomTitleKey));
if (Header.ReadString(Data.Models.Metadata.Header.RootDirKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.RootDirKey, header.ReadString(Data.Models.Metadata.Header.RootDirKey));
if (Header.RomTitle is null)
Header.RomTitle = header.RomTitle;
if (Header.RootDir is null)
Header.RootDir = header.RootDir;
if (Header.SampleMode == MergingFlag.None)
Header.SampleMode = header.SampleMode;
if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null)
@@ -158,22 +158,22 @@ namespace SabreTools.Metadata.DatFiles
Header.Write<string?>(Data.Models.Metadata.Header.ScreenshotsHeightKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey));
if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.ScreenshotsWidthKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey));
if (Header.ReadString(Data.Models.Metadata.Header.SystemKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.SystemKey, header.ReadString(Data.Models.Metadata.Header.SystemKey));
if (Header.ReadString(Data.Models.Metadata.Header.TimestampKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.TimestampKey, header.ReadString(Data.Models.Metadata.Header.TimestampKey));
if (Header.ReadString(Data.Models.Metadata.Header.TypeKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.TypeKey, header.ReadString(Data.Models.Metadata.Header.TypeKey));
if (Header.ReadString(Data.Models.Metadata.Header.UrlKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.UrlKey, header.ReadString(Data.Models.Metadata.Header.UrlKey));
if (Header.ReadString(Data.Models.Metadata.Header.VersionKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.VersionKey, header.ReadString(Data.Models.Metadata.Header.VersionKey));
if (Header.System is null)
Header.System = header.System;
if (Header.Timestamp is null)
Header.Timestamp = header.Timestamp;
if (Header.Type is null)
Header.Type = header.Type;
if (Header.Url is null)
Header.Url = header.Url;
if (Header.Version is null)
Header.Version = header.Version;
// Handle implied SuperDAT
if (Header.Name?.Contains(" - SuperDAT") == true && keep)
{
if (Header.ReadString(Data.Models.Metadata.Header.TypeKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.TypeKey, "SuperDAT");
if (Header.Type is null)
Header.Type = "SuperDAT";
}
}

View File

@@ -97,7 +97,7 @@ namespace SabreTools.Metadata.DatFiles
// Get the header strings
string? name = Header.Name;
string? description = Header.Description;
string? date = Header.ReadString(Data.Models.Metadata.Header.DateKey);
string? date = Header.Date;
// If the description is defined but not the name, set the name from the description
if (string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(description))

View File

@@ -31,12 +31,24 @@ namespace SabreTools.Metadata.DatFiles
#region Fields
public string? Author
{
get => _internal.Author;
set => _internal.Author = value;
}
public MergingFlag BiosMode
{
get => _internal.BiosMode;
set => _internal.BiosMode = value;
}
public string? Build
{
get => _internal.Build;
set => _internal.Build = value;
}
[JsonIgnore]
public bool CanOpenSpecified
{
@@ -47,6 +59,30 @@ namespace SabreTools.Metadata.DatFiles
}
}
public string? Category
{
get => _internal.Category;
set => _internal.Category = value;
}
public string? Comment
{
get => _internal.Comment;
set => _internal.Comment = value;
}
public string? Date
{
get => _internal.Date;
set => _internal.Date = value;
}
public string? DatVersion
{
get => _internal.DatVersion;
set => _internal.DatVersion = value;
}
public bool? Debug
{
get => _internal.Debug;
@@ -59,6 +95,18 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.Description = value;
}
public string? Email
{
get => _internal.Email;
set => _internal.Email = value;
}
public string? EmulatorVersion
{
get => _internal.EmulatorVersion;
set => _internal.EmulatorVersion = value;
}
public MergingFlag ForceMerging
{
get => _internal.ForceMerging;
@@ -83,6 +131,18 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.ForceZipping = value;
}
public string? Homepage
{
get => _internal.Homepage;
set => _internal.Homepage = value;
}
public string? Id
{
get => _internal.Id;
set => _internal.Id = value;
}
[JsonIgnore]
public bool ImagesSpecified
{
@@ -119,6 +179,12 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.LockSampleMode = value;
}
public string? MameConfig
{
get => _internal.MameConfig;
set => _internal.MameConfig = value;
}
public string? Name
{
get => _internal.Name;
@@ -134,12 +200,42 @@ namespace SabreTools.Metadata.DatFiles
}
}
public string? Notes
{
get => _internal.Notes;
set => _internal.Notes = value;
}
public string? Plugin
{
get => _internal.Plugin;
set => _internal.Plugin = value;
}
public string? RefName
{
get => _internal.RefName;
set => _internal.RefName = value;
}
public MergingFlag RomMode
{
get => _internal.RomMode;
set => _internal.RomMode = value;
}
public string? RomTitle
{
get => _internal.RomTitle;
set => _internal.RomTitle = value;
}
public string? RootDir
{
get => _internal.RootDir;
set => _internal.RootDir = value;
}
public MergingFlag SampleMode
{
get => _internal.SampleMode;
@@ -155,6 +251,36 @@ namespace SabreTools.Metadata.DatFiles
}
}
public string? System
{
get => _internal.System;
set => _internal.System = value;
}
public string? Timestamp
{
get => _internal.Timestamp;
set => _internal.Timestamp = value;
}
public string? Type
{
get => _internal.Type;
set => _internal.Type = value;
}
public string? Url
{
get => _internal.Url;
set => _internal.Url = value;
}
public string? Version
{
get => _internal.Version;
set => _internal.Version = value;
}
#endregion
#region Constructors

View File

@@ -384,7 +384,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
// TODO: Enable No-Intro doctype writing instead of Logiqx
// Only write the doctype if we don't have No-Intro data
bool success;
if (string.IsNullOrEmpty(Header.ReadString(Data.Models.Metadata.Header.IdKey)))
if (string.IsNullOrEmpty(Header.Id))
success = new Serialization.Writers.Logiqx().SerializeFile(datafile, outfile);
else
success = new Serialization.Writers.Logiqx().SerializeFile(datafile, outfile);