From 49d3d9c09647f2ca4b34d1981c43db784d050c00 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 22:01:42 -0400 Subject: [PATCH] Migrate most header string keys to properties --- .../MetadataExtensions.cs | 22 +++ SabreTools.Data.Models/Metadata/Header.cs | 105 ++++++--------- .../DatFileTests.FromMetadata.cs | 84 ++++++------ .../DatFileTests.ToMetadata.cs | 42 +++--- .../DatFileTests.cs | 16 +-- .../DatFile.FromMetadata.cs | 88 ++++++------ SabreTools.Metadata.DatFiles/DatFile.cs | 2 +- SabreTools.Metadata.DatFiles/DatHeader.cs | 126 ++++++++++++++++++ .../Formats/Logiqx.cs | 2 +- .../FilterRunnerTests.cs | 8 +- SabreTools.Metadata.Filter/FilterObject.cs | 63 +++++++++ .../ClrMamePro.Deserializer.cs | 18 +-- .../ClrMamePro.Serializer.cs | 18 +-- .../DosCenter.Deserializer.cs | 10 +- .../DosCenter.Serializer.cs | 10 +- .../Listxml.Deserializer.cs | 4 +- .../Listxml.Serializer.cs | 4 +- .../Logiqx.Deserializer.cs | 26 ++-- .../Logiqx.Serializer.cs | 26 ++-- .../M1.Deserializer.cs | 2 +- .../M1.Serializer.cs | 2 +- .../Mess.Deserializer.cs | 2 +- .../Mess.Serializer.cs | 2 +- .../OfflineList.Deserializer.cs | 12 +- .../OfflineList.Serializer.cs | 6 +- .../OpenMSX.Deserializer.cs | 2 +- .../OpenMSX.Serializer.cs | 2 +- .../RomCenter.Deserializer.cs | 44 +++--- .../RomCenter.Serializer.cs | 22 +-- .../SoftwareList.Deserializer.cs | 2 +- .../SoftwareList.Serializer.cs | 2 +- 31 files changed, 482 insertions(+), 292 deletions(-) diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index bf55a13f..89b1116e 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -258,18 +258,40 @@ namespace SabreTools.Data.Extensions } else if (self is Header selfHeader && clone is Header cloneHeader) { + cloneHeader.Author = selfHeader.Author; cloneHeader.BiosMode = selfHeader.BiosMode; + cloneHeader.Build = selfHeader.Build; + cloneHeader.Category = selfHeader.Category; + cloneHeader.Comment = selfHeader.Comment; + cloneHeader.Date = selfHeader.Date; + cloneHeader.DatVersion = selfHeader.DatVersion; cloneHeader.Debug = selfHeader.Debug; cloneHeader.Description = selfHeader.Description; + cloneHeader.Email = selfHeader.Email; + cloneHeader.EmulatorVersion = selfHeader.EmulatorVersion; cloneHeader.ForceMerging = selfHeader.ForceMerging; cloneHeader.ForceNodump = selfHeader.ForceNodump; cloneHeader.ForcePacking = selfHeader.ForcePacking; cloneHeader.ForceZipping = selfHeader.ForceZipping; + cloneHeader.Homepage = selfHeader.Homepage; + cloneHeader.Id = selfHeader.Id; cloneHeader.LockBiosMode = selfHeader.LockBiosMode; cloneHeader.LockRomMode = selfHeader.LockRomMode; cloneHeader.LockSampleMode = selfHeader.LockSampleMode; + cloneHeader.MameConfig = selfHeader.MameConfig; + cloneHeader.Name = selfHeader.Name; + cloneHeader.Notes = selfHeader.Notes; + cloneHeader.Plugin = selfHeader.Plugin; + cloneHeader.RefName = selfHeader.RefName; cloneHeader.RomMode = selfHeader.RomMode; + cloneHeader.RomTitle = selfHeader.RomTitle; + cloneHeader.RootDir = selfHeader.RootDir; cloneHeader.SampleMode = selfHeader.SampleMode; + cloneHeader.System = selfHeader.System; + cloneHeader.Timestamp = selfHeader.Timestamp; + cloneHeader.Type = selfHeader.Type; + cloneHeader.Url = selfHeader.Url; + cloneHeader.Version = selfHeader.Version; } else if (self is Info selfInfo && clone is Info cloneInfo) { diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index e933e9a6..31803fe3 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -8,14 +8,30 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public string? Author { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag BiosMode { get; set; } + public string? Build { get; set; } + + public string? Category { get; set; } + + public string? Comment { get; set; } + + public string? Date { get; set; } + + public string? DatVersion { get; set; } + /// (yes|no) "no" public bool? Debug { get; set; } public string? Description { get; set; } + public string? Email { get; set; } + + public string? EmulatorVersion { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag ForceMerging { get; set; } @@ -28,6 +44,10 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "yes" public bool? ForceZipping { get; set; } + public string? Homepage { get; set; } + + public string? Id { get; set; } + /// (yes|no) "no" public bool? LockBiosMode { get; set; } @@ -37,56 +57,48 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? LockSampleMode { get; set; } + public string? MameConfig { get; set; } + public string? Name { get; set; } + public string? Notes { get; set; } + + public string? Plugin { get; set; } + + public string? RefName { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag RomMode { get; set; } + public string? RomTitle { get; set; } + + public string? RootDir { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag SampleMode { get; set; } + public string? System { get; set; } + + public string? Timestamp { get; set; } + + public string? Type { get; set; } + + public string? Url { get; set; } + + public string? Version { get; set; } + #endregion #region Keys - /// string - public const string AuthorKey = "author"; - - /// string - public const string BuildKey = "build"; - /// TODO: This needs an internal model OR mapping to fields /// CanOpen [NoFilter] public const string CanOpenKey = "canOpen"; - /// string - public const string CategoryKey = "category"; - - /// string - public const string CommentKey = "comment"; - - /// string - public const string DateKey = "date"; - - /// string - public const string DatVersionKey = "datversion"; - - /// string - public const string EmailKey = "email"; - - /// string - public const string EmulatorVersionKey = "emulatorversion"; - /// string, string[] public const string HeaderKey = "header"; - /// string - public const string HomepageKey = "homepage"; - - /// string - public const string IdKey = "id"; - /// TODO: This needs an internal model OR mapping to fields /// Search [NoFilter] @@ -100,29 +112,11 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string InfosKey = "infos"; - /// string - public const string MameConfigKey = "mameconfig"; - /// TODO: This needs an internal model OR mapping to fields /// NewDat [NoFilter] public const string NewDatKey = "newDat"; - /// string - public const string NotesKey = "notes"; - - /// string - public const string PluginKey = "plugin"; - - /// string - public const string RefNameKey = "refname"; - - /// string - public const string RomTitleKey = "romTitle"; - - /// string - public const string RootDirKey = "rootdir"; - /// string public const string SchemaLocationKey = "schemaLocation"; @@ -137,21 +131,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string SearchKey = "search"; - /// string - public const string SystemKey = "system"; - - /// string - public const string TimestampKey = "timestamp"; - - /// string - public const string TypeKey = "type"; - - /// string - public const string UrlKey = "url"; - - /// string - public const string VersionKey = "version"; - #endregion } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 74f5a646..7bbcd309 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -201,50 +201,50 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.AuthorKey] = "author", + Author = "author", BiosMode = Data.Models.Metadata.MergingFlag.Merged, - [Data.Models.Metadata.Header.BuildKey] = "build", + Build = "build", [Data.Models.Metadata.Header.CanOpenKey] = canOpen, - [Data.Models.Metadata.Header.CategoryKey] = "category", - [Data.Models.Metadata.Header.CommentKey] = "comment", - [Data.Models.Metadata.Header.DateKey] = "date", - [Data.Models.Metadata.Header.DatVersionKey] = "datversion", + Category = "category", + Comment = "comment", + Date = "date", + DatVersion = "datversion", Debug = true, Description = "description", - [Data.Models.Metadata.Header.EmailKey] = "email", - [Data.Models.Metadata.Header.EmulatorVersionKey] = "emulatorversion", + Email = "email", + EmulatorVersion = "emulatorversion", ForceMerging = Data.Models.Metadata.MergingFlag.Merged, ForceNodump = Data.Models.Metadata.NodumpFlag.Required, ForcePacking = Data.Models.Metadata.PackingFlag.Zip, ForceZipping = true, [Data.Models.Metadata.Header.HeaderKey] = "header", - [Data.Models.Metadata.Header.HomepageKey] = "homepage", - [Data.Models.Metadata.Header.IdKey] = "id", + Homepage = "homepage", + Id = "id", [Data.Models.Metadata.Header.ImagesKey] = images, [Data.Models.Metadata.Header.ImFolderKey] = "imfolder", [Data.Models.Metadata.Header.InfosKey] = infos, LockBiosMode = true, LockRomMode = true, LockSampleMode = true, - [Data.Models.Metadata.Header.MameConfigKey] = "mameconfig", + MameConfig = "mameconfig", Name = "name", [Data.Models.Metadata.Header.NewDatKey] = newDat, - [Data.Models.Metadata.Header.NotesKey] = "notes", - [Data.Models.Metadata.Header.PluginKey] = "plugin", - [Data.Models.Metadata.Header.RefNameKey] = "refname", + Notes = "notes", + Plugin = "plugin", + RefName = "refname", RomMode = Data.Models.Metadata.MergingFlag.Merged, - [Data.Models.Metadata.Header.RomTitleKey] = "romtitle", - [Data.Models.Metadata.Header.RootDirKey] = "rootdir", + RomTitle = "romtitle", + RootDir = "rootdir", SampleMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation", [Data.Models.Metadata.Header.ScreenshotsHeightKey] = "screenshotsheight", [Data.Models.Metadata.Header.ScreenshotsWidthKey] = "screenshotsWidth", [Data.Models.Metadata.Header.SearchKey] = search, - [Data.Models.Metadata.Header.SystemKey] = "system", - [Data.Models.Metadata.Header.TimestampKey] = "timestamp", - [Data.Models.Metadata.Header.TypeKey] = "type", - [Data.Models.Metadata.Header.UrlKey] = "url", - [Data.Models.Metadata.Header.VersionKey] = "version", + System = "system", + Timestamp = "timestamp", + Type = "type", + Url = "url", + Version = "version", }; } @@ -1037,50 +1037,50 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateHeader(DatHeader datHeader) { - Assert.Equal("author", datHeader.ReadString(Data.Models.Metadata.Header.AuthorKey)); + Assert.Equal("author", datHeader.Author); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.BiosMode); - Assert.Equal("build", datHeader.ReadString(Data.Models.Metadata.Header.BuildKey)); + Assert.Equal("build", datHeader.Build); Assert.Equal("ext", datHeader.ReadString(Data.Models.Metadata.Header.CanOpenKey)); - Assert.Equal("category", datHeader.ReadString(Data.Models.Metadata.Header.CategoryKey)); - Assert.Equal("comment", datHeader.ReadString(Data.Models.Metadata.Header.CommentKey)); - Assert.Equal("date", datHeader.ReadString(Data.Models.Metadata.Header.DateKey)); - Assert.Equal("datversion", datHeader.ReadString(Data.Models.Metadata.Header.DatVersionKey)); + Assert.Equal("category", datHeader.Category); + Assert.Equal("comment", datHeader.Comment); + Assert.Equal("date", datHeader.Date); + Assert.Equal("datversion", datHeader.DatVersion); Assert.True(datHeader.Debug); Assert.Equal("description", datHeader.Description); - Assert.Equal("email", datHeader.ReadString(Data.Models.Metadata.Header.EmailKey)); - Assert.Equal("emulatorversion", datHeader.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); + Assert.Equal("email", datHeader.Email); + Assert.Equal("emulatorversion", datHeader.EmulatorVersion); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.ForceMerging); 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("homepage", datHeader.ReadString(Data.Models.Metadata.Header.HomepageKey)); - Assert.Equal("id", datHeader.ReadString(Data.Models.Metadata.Header.IdKey)); + Assert.Equal("homepage", datHeader.Homepage); + Assert.Equal("id", datHeader.Id); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.ImagesKey)); Assert.Equal("imfolder", datHeader.ReadString(Data.Models.Metadata.Header.ImFolderKey)); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.InfosKey)); Assert.True(datHeader.LockBiosMode); Assert.True(datHeader.LockRomMode); Assert.True(datHeader.LockSampleMode); - Assert.Equal("mameconfig", datHeader.ReadString(Data.Models.Metadata.Header.MameConfigKey)); + Assert.Equal("mameconfig", datHeader.MameConfig); Assert.Equal("name", datHeader.Name); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.NewDatKey)); - Assert.Equal("notes", datHeader.ReadString(Data.Models.Metadata.Header.NotesKey)); - Assert.Equal("plugin", datHeader.ReadString(Data.Models.Metadata.Header.PluginKey)); - Assert.Equal("refname", datHeader.ReadString(Data.Models.Metadata.Header.RefNameKey)); + Assert.Equal("notes", datHeader.Notes); + Assert.Equal("plugin", datHeader.Plugin); + Assert.Equal("refname", datHeader.RefName); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.RomMode); - Assert.Equal("romtitle", datHeader.ReadString(Data.Models.Metadata.Header.RomTitleKey)); - Assert.Equal("rootdir", datHeader.ReadString(Data.Models.Metadata.Header.RootDirKey)); + Assert.Equal("romtitle", datHeader.RomTitle); + Assert.Equal("rootdir", datHeader.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.SampleMode); Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); Assert.Equal("screenshotsWidth", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.SearchKey)); - Assert.Equal("system", datHeader.ReadString(Data.Models.Metadata.Header.SystemKey)); - Assert.Equal("timestamp", datHeader.ReadString(Data.Models.Metadata.Header.TimestampKey)); - Assert.Equal("type", datHeader.ReadString(Data.Models.Metadata.Header.TypeKey)); - Assert.Equal("url", datHeader.ReadString(Data.Models.Metadata.Header.UrlKey)); - Assert.Equal("version", datHeader.ReadString(Data.Models.Metadata.Header.VersionKey)); + Assert.Equal("system", datHeader.System); + Assert.Equal("timestamp", datHeader.Timestamp); + Assert.Equal("type", datHeader.Type); + Assert.Equal("url", datHeader.Url); + Assert.Equal("version", datHeader.Version); } #pragma warning disable IDE0051 diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index edc3c678..9345937e 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -373,50 +373,50 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataHeader(Data.Models.Metadata.Header? header) { Assert.NotNull(header); - Assert.Equal("author", header.ReadString(Data.Models.Metadata.Header.AuthorKey)); + Assert.Equal("author", header.Author); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.BiosMode); - Assert.Equal("build", header.ReadString(Data.Models.Metadata.Header.BuildKey)); + Assert.Equal("build", header.Build); Assert.NotNull(header.Read(Data.Models.Metadata.Header.CanOpenKey)); - Assert.Equal("category", header.ReadString(Data.Models.Metadata.Header.CategoryKey)); - Assert.Equal("comment", header.ReadString(Data.Models.Metadata.Header.CommentKey)); - Assert.Equal("date", header.ReadString(Data.Models.Metadata.Header.DateKey)); - Assert.Equal("datversion", header.ReadString(Data.Models.Metadata.Header.DatVersionKey)); + Assert.Equal("category", header.Category); + Assert.Equal("comment", header.Comment); + Assert.Equal("date", header.Date); + Assert.Equal("datversion", header.DatVersion); Assert.True(header.Debug); Assert.Equal("description", header.Description); - Assert.Equal("email", header.ReadString(Data.Models.Metadata.Header.EmailKey)); - Assert.Equal("emulatorversion", header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); + Assert.Equal("email", header.Email); + Assert.Equal("emulatorversion", header.EmulatorVersion); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.ForceMerging); 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("homepage", header.ReadString(Data.Models.Metadata.Header.HomepageKey)); - Assert.Equal("id", header.ReadString(Data.Models.Metadata.Header.IdKey)); + Assert.Equal("homepage", header.Homepage); + Assert.Equal("id", header.Id); Assert.NotNull(header.Read(Data.Models.Metadata.Header.ImagesKey)); Assert.Equal("imfolder", header.ReadString(Data.Models.Metadata.Header.ImFolderKey)); Assert.NotNull(header.Read(Data.Models.Metadata.Header.InfosKey)); Assert.True(header.LockBiosMode); Assert.True(header.LockRomMode); Assert.True(header.LockSampleMode); - Assert.Equal("mameconfig", header.ReadString(Data.Models.Metadata.Header.MameConfigKey)); + Assert.Equal("mameconfig", header.MameConfig); Assert.Equal("name", header.Name); Assert.NotNull(header.Read(Data.Models.Metadata.Header.NewDatKey)); - Assert.Equal("notes", header.ReadString(Data.Models.Metadata.Header.NotesKey)); - Assert.Equal("plugin", header.ReadString(Data.Models.Metadata.Header.PluginKey)); - Assert.Equal("refname", header.ReadString(Data.Models.Metadata.Header.RefNameKey)); + Assert.Equal("notes", header.Notes); + Assert.Equal("plugin", header.Plugin); + Assert.Equal("refname", header.RefName); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.RomMode); - Assert.Equal("romtitle", header.ReadString(Data.Models.Metadata.Header.RomTitleKey)); - Assert.Equal("rootdir", header.ReadString(Data.Models.Metadata.Header.RootDirKey)); + Assert.Equal("romtitle", header.RomTitle); + Assert.Equal("rootdir", header.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.SampleMode); Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); Assert.Equal("screenshotsWidth", header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); Assert.NotNull(header.Read(Data.Models.Metadata.Header.SearchKey)); - Assert.Equal("system", header.ReadString(Data.Models.Metadata.Header.SystemKey)); - Assert.Equal("timestamp", header.ReadString(Data.Models.Metadata.Header.TimestampKey)); - Assert.Equal("type", header.ReadString(Data.Models.Metadata.Header.TypeKey)); - Assert.Equal("url", header.ReadString(Data.Models.Metadata.Header.UrlKey)); - Assert.Equal("version", header.ReadString(Data.Models.Metadata.Header.VersionKey)); + Assert.Equal("system", header.System); + Assert.Equal("timestamp", header.Timestamp); + Assert.Equal("type", header.Type); + Assert.Equal("url", header.Url); + Assert.Equal("version", header.Version); } private static void ValidateMetadataMachine(Data.Models.Metadata.Machine machine) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs index 19683978..0987c682 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.cs @@ -115,7 +115,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; datFile.Header.Description = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); @@ -130,7 +130,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; datFile.Header.Description = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); @@ -145,7 +145,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; datFile.Header.Description = "Description"; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); @@ -160,7 +160,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = string.Empty; datFile.Header.Description = "Description"; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); @@ -175,7 +175,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name"; datFile.Header.Description = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); @@ -190,7 +190,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name"; datFile.Header.Description = string.Empty; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); @@ -205,7 +205,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name"; datFile.Header.Description = "Description"; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, false); @@ -220,7 +220,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatFile datFile = new Logiqx(datFile: null, useGame: false); datFile.Header.Name = "Name "; datFile.Header.Description = "Description "; - datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01"); + datFile.Header.Date = "1980-01-01"; string path = Path.Combine("Fake", "Path", "Filename"); datFile.FillHeaderFromPath(path, true); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index ba404243..d935a962 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -90,28 +90,28 @@ namespace SabreTools.Metadata.DatFiles Header.Write(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(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(Data.Models.Metadata.Header.BuildKey, header.ReadString(Data.Models.Metadata.Header.BuildKey)); - if (Header.ReadString(Data.Models.Metadata.Header.CategoryKey) is null) - Header.Write(Data.Models.Metadata.Header.CategoryKey, header.ReadString(Data.Models.Metadata.Header.CategoryKey)); - if (Header.ReadString(Data.Models.Metadata.Header.CommentKey) is null) - Header.Write(Data.Models.Metadata.Header.CommentKey, header.ReadString(Data.Models.Metadata.Header.CommentKey)); - if (Header.ReadString(Data.Models.Metadata.Header.DateKey) is null) - Header.Write(Data.Models.Metadata.Header.DateKey, header.ReadString(Data.Models.Metadata.Header.DateKey)); - if (Header.ReadString(Data.Models.Metadata.Header.DatVersionKey) is null) - Header.Write(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(Data.Models.Metadata.Header.EmailKey, header.ReadString(Data.Models.Metadata.Header.EmailKey)); - if (Header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey) is null) - Header.Write(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(Data.Models.Metadata.Header.HeaderKey, header.ReadString(Data.Models.Metadata.Header.HeaderKey)); - if (Header.ReadString(Data.Models.Metadata.Header.HomepageKey) is null) - Header.Write(Data.Models.Metadata.Header.HomepageKey, header.ReadString(Data.Models.Metadata.Header.HomepageKey)); - if (Header.ReadString(Data.Models.Metadata.Header.IdKey) is null) - Header.Write(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(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(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(Data.Models.Metadata.Header.NotesKey, header.ReadString(Data.Models.Metadata.Header.NotesKey)); - if (Header.ReadString(Data.Models.Metadata.Header.PluginKey) is null) - Header.Write(Data.Models.Metadata.Header.PluginKey, header.ReadString(Data.Models.Metadata.Header.PluginKey)); - if (Header.ReadString(Data.Models.Metadata.Header.RefNameKey) is null) - Header.Write(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(Data.Models.Metadata.Header.RomTitleKey, header.ReadString(Data.Models.Metadata.Header.RomTitleKey)); - if (Header.ReadString(Data.Models.Metadata.Header.RootDirKey) is null) - Header.Write(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(Data.Models.Metadata.Header.ScreenshotsHeightKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey) is null) Header.Write(Data.Models.Metadata.Header.ScreenshotsWidthKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); - if (Header.ReadString(Data.Models.Metadata.Header.SystemKey) is null) - Header.Write(Data.Models.Metadata.Header.SystemKey, header.ReadString(Data.Models.Metadata.Header.SystemKey)); - if (Header.ReadString(Data.Models.Metadata.Header.TimestampKey) is null) - Header.Write(Data.Models.Metadata.Header.TimestampKey, header.ReadString(Data.Models.Metadata.Header.TimestampKey)); - if (Header.ReadString(Data.Models.Metadata.Header.TypeKey) is null) - Header.Write(Data.Models.Metadata.Header.TypeKey, header.ReadString(Data.Models.Metadata.Header.TypeKey)); - if (Header.ReadString(Data.Models.Metadata.Header.UrlKey) is null) - Header.Write(Data.Models.Metadata.Header.UrlKey, header.ReadString(Data.Models.Metadata.Header.UrlKey)); - if (Header.ReadString(Data.Models.Metadata.Header.VersionKey) is null) - Header.Write(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(Data.Models.Metadata.Header.TypeKey, "SuperDAT"); + if (Header.Type is null) + Header.Type = "SuperDAT"; } } diff --git a/SabreTools.Metadata.DatFiles/DatFile.cs b/SabreTools.Metadata.DatFiles/DatFile.cs index ebcfa269..6ce84666 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.cs @@ -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)) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 0a42f5ab..a1de654f 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -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 diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index 6175d740..677968b5 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -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); diff --git a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs index f80ddb49..29e258fe 100644 --- a/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs +++ b/SabreTools.Metadata.Filter.Test/FilterRunnerTests.cs @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Header_Null_False() { - var header = new Header { [Header.AuthorKey] = null }; + var header = new Header { Author = null }; bool actual = _filterRunner.Run(header); Assert.False(actual); } @@ -41,7 +41,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Header_Empty_False() { - var header = new Header { [Header.AuthorKey] = "" }; + var header = new Header { Author = "" }; bool actual = _filterRunner.Run(header); Assert.False(actual); } @@ -49,7 +49,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Header_Incorrect_False() { - var header = new Header { [Header.AuthorKey] = "NO_MATCH" }; + var header = new Header { Author = "NO_MATCH" }; bool actual = _filterRunner.Run(header); Assert.False(actual); } @@ -57,7 +57,7 @@ namespace SabreTools.Metadata.Filter.Test [Fact] public void Header_Correct_True() { - var header = new Header { [Header.AuthorKey] = "auth" }; + var header = new Header { Author = "auth" }; bool actual = _filterRunner.Run(header); Assert.True(actual); } diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 49f54193..e3ab5156 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -527,15 +527,39 @@ namespace SabreTools.Metadata.Filter checkValue = item.Value; return true; + case Header item when fieldName == "author": + checkValue = item.Author; + return true; case Header item when fieldName == "biosmode": checkValue = item.BiosMode.AsStringValue(); return true; + case Header item when fieldName == "build": + checkValue = item.Build; + return true; + case Header item when fieldName == "category": + checkValue = item.Category; + return true; + case Header item when fieldName == "comment": + checkValue = item.Comment; + return true; + case Header item when fieldName == "date": + checkValue = item.Date; + return true; + case Header item when fieldName == "datversion": + checkValue = item.DatVersion; + return true; case Header item when fieldName == "debug": checkValue = item.Debug.FromYesNo(); return true; case Header item when fieldName == "description": checkValue = item.Description; return true; + case Header item when fieldName == "email": + checkValue = item.Email; + return true; + case Header item when fieldName == "emulatorversion": + checkValue = item.EmulatorVersion; + return true; case Header item when fieldName == "forcemerging": checkValue = item.ForceMerging.AsStringValue(); return true; @@ -548,6 +572,12 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "forcezipping": checkValue = item.ForceZipping.FromYesNo(); return true; + case Header item when fieldName == "homepage": + checkValue = item.Homepage; + return true; + case Header item when fieldName == "id": + checkValue = item.Id; + return true; case Header item when fieldName == "lockbiosmode": checkValue = item.LockBiosMode.FromYesNo(); return true; @@ -557,12 +587,45 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "locksamplemode": checkValue = item.LockSampleMode.FromYesNo(); return true; + case Header item when fieldName == "mameconfig": + checkValue = item.MameConfig; + return true; + case Header item when fieldName == "notes": + checkValue = item.Notes; + return true; + case Header item when fieldName == "plugin": + checkValue = item.Plugin; + return true; + case Header item when fieldName == "refname": + checkValue = item.RefName; + return true; case Header item when fieldName == "rommode": checkValue = item.RomMode.AsStringValue(); return true; + case Header item when fieldName == "romtitle": + checkValue = item.RomTitle; + return true; + case Header item when fieldName == "rootdir": + checkValue = item.RootDir; + return true; case Header item when fieldName == "samplemode": checkValue = item.SampleMode.AsStringValue(); return true; + case Header item when fieldName == "system": + checkValue = item.System; + return true; + case Header item when fieldName == "timestamp": + checkValue = item.Timestamp; + return true; + case Header item when fieldName == "type": + checkValue = item.Timestamp; + return true; + case Header item when fieldName == "url": + checkValue = item.Url; + return true; + case Header item when fieldName == "version": + checkValue = item.Version; + return true; case Info item when fieldName == "value": checkValue = item.Value; diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 940c75f6..24a7ed8f 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -45,16 +45,16 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey), - Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey), - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), - Date = item.ReadString(Data.Models.Metadata.Header.DateKey), - Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey), - Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey), - Url = item.ReadString(Data.Models.Metadata.Header.UrlKey), - Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), + RootDir = item.RootDir, + Category = item.Category, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Homepage = item.Homepage, + Url = item.Url, + Comment = item.Comment, Header = item.ReadString(Data.Models.Metadata.Header.HeaderKey), - Type = item.ReadString(Data.Models.Metadata.Header.TypeKey), + Type = item.Type, ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, ForcePacking = item.ForcePacking, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 70807e57..3e3a1b30 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -37,16 +37,16 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, - [Data.Models.Metadata.Header.CategoryKey] = item.Category, - [Data.Models.Metadata.Header.VersionKey] = item.Version, - [Data.Models.Metadata.Header.DateKey] = item.Date, - [Data.Models.Metadata.Header.AuthorKey] = item.Author, - [Data.Models.Metadata.Header.HomepageKey] = item.Homepage, - [Data.Models.Metadata.Header.UrlKey] = item.Url, - [Data.Models.Metadata.Header.CommentKey] = item.Comment, + RootDir = item.RootDir, + Category = item.Category, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Homepage = item.Homepage, + Url = item.Url, + Comment = item.Comment, [Data.Models.Metadata.Header.HeaderKey] = item.Header, - [Data.Models.Metadata.Header.TypeKey] = item.Type, + Type = item.Type, ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, ForcePacking = item.ForcePacking, diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index 9e949b31..2192f6bf 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -33,11 +33,11 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), - Date = item.ReadString(Data.Models.Metadata.Header.DateKey), - Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey), - Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey), - Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), + Version = item.Version, + Date = item.Date, + Author = item.Author, + Homepage = item.Homepage, + Comment = item.Comment, }; return dosCenter; } diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index 84fabfa2..2fa7c5d2 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -34,11 +34,11 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - [Data.Models.Metadata.Header.VersionKey] = item.Version, - [Data.Models.Metadata.Header.DateKey] = item.Date, - [Data.Models.Metadata.Header.AuthorKey] = item.Author, - [Data.Models.Metadata.Header.HomepageKey] = item.Homepage, - [Data.Models.Metadata.Header.CommentKey] = item.Comment, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Homepage = item.Homepage, + Comment = item.Comment, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 9cab05a1..e36a8a08 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -28,9 +28,9 @@ namespace SabreTools.Serialization.CrossModel { var mame = new Mame { - Build = item.ReadString(Data.Models.Metadata.Header.BuildKey), + Build = item.Build, Debug = item.Debug, - MameConfig = item.ReadString(Data.Models.Metadata.Header.MameConfigKey), + MameConfig = item.MameConfig, }; return mame; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index d15be86f..6cd096b6 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -32,9 +32,9 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.BuildKey] = item.Build, + Build = item.Build, Debug = item.Debug, - [Data.Models.Metadata.Header.MameConfigKey] = item.MameConfig, + MameConfig = item.MameConfig, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index baa62d3e..6c2ed3d7 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -21,7 +21,7 @@ namespace SabreTools.Serialization.CrossModel var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); if (header is not null) { - datafile.Build = header.ReadString(Data.Models.Metadata.Header.BuildKey); + datafile.Build = header.Build; datafile.Debug = header.Debug; datafile.SchemaLocation = header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey); datafile.Header = ConvertHeaderFromInternalModel(header); @@ -41,19 +41,19 @@ namespace SabreTools.Serialization.CrossModel { var header = new Header { - Id = item.ReadString(Data.Models.Metadata.Header.IdKey), + Id = item.Id, Name = item.Name, Description = item.Description, - RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey), - Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey), - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), - Date = item.ReadString(Data.Models.Metadata.Header.DateKey), - Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey), - Email = item.ReadString(Data.Models.Metadata.Header.EmailKey), - Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey), - Url = item.ReadString(Data.Models.Metadata.Header.UrlKey), - Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), - Type = item.ReadString(Data.Models.Metadata.Header.TypeKey), + RootDir = item.RootDir, + Category = item.Category, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Email = item.Email, + Homepage = item.Homepage, + Url = item.Url, + Comment = item.Comment, + Type = item.Type, }; string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey); @@ -77,7 +77,7 @@ namespace SabreTools.Serialization.CrossModel header.ClrMamePro.ForcePacking = forcePacking; } - string? plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey); + string? plugin = item.Plugin; Data.Models.Metadata.MergingFlag romMode = item.RomMode; Data.Models.Metadata.MergingFlag biosMode = item.BiosMode; Data.Models.Metadata.MergingFlag sampleMode = item.SampleMode; diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 21cfb164..ef4a60ae 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -39,7 +39,7 @@ namespace SabreTools.Serialization.CrossModel { var header = item.Header is not null ? ConvertHeaderToInternalModel(item.Header) : []; - header[Data.Models.Metadata.Header.BuildKey] = item.Build; + header.Build = item.Build; header.Debug = item.Debug; header[Data.Models.Metadata.Header.SchemaLocationKey] = item.SchemaLocation; @@ -53,19 +53,19 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.IdKey] = item.Id, + Id = item.Id, Name = item.Name, Description = item.Description, - [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, - [Data.Models.Metadata.Header.CategoryKey] = item.Category, - [Data.Models.Metadata.Header.VersionKey] = item.Version, - [Data.Models.Metadata.Header.DateKey] = item.Date, - [Data.Models.Metadata.Header.AuthorKey] = item.Author, - [Data.Models.Metadata.Header.EmailKey] = item.Email, - [Data.Models.Metadata.Header.HomepageKey] = item.Homepage, - [Data.Models.Metadata.Header.UrlKey] = item.Url, - [Data.Models.Metadata.Header.CommentKey] = item.Comment, - [Data.Models.Metadata.Header.TypeKey] = item.Type, + RootDir = item.RootDir, + Category = item.Category, + Version = item.Version, + Date = item.Date, + Author = item.Author, + Email = item.Email, + Homepage = item.Homepage, + Url = item.Url, + Comment = item.Comment, + Type = item.Type, }; if (item.ClrMamePro is not null) @@ -78,7 +78,7 @@ namespace SabreTools.Serialization.CrossModel if (item.RomCenter is not null) { - header[Data.Models.Metadata.Header.PluginKey] = item.RomCenter.Plugin; + header.Plugin = item.RomCenter.Plugin; header.RomMode = item.RomCenter.RomMode; header.BiosMode = item.RomCenter.BiosMode; header.SampleMode = item.RomCenter.SampleMode; diff --git a/SabreTools.Serialization.CrossModel/M1.Deserializer.cs b/SabreTools.Serialization.CrossModel/M1.Deserializer.cs index fed470ee..224eecdd 100644 --- a/SabreTools.Serialization.CrossModel/M1.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/M1.Deserializer.cs @@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel { var m1 = new Data.Models.Listxml.M1 { - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), + Version = item.Version, }; return m1; } diff --git a/SabreTools.Serialization.CrossModel/M1.Serializer.cs b/SabreTools.Serialization.CrossModel/M1.Serializer.cs index fb9bd468..4f5cc631 100644 --- a/SabreTools.Serialization.CrossModel/M1.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/M1.Serializer.cs @@ -31,7 +31,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.VersionKey] = item.Version, + Version = item.Version, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs b/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs index faf51440..b9868ff1 100644 --- a/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs @@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel { var m1 = new Data.Models.Listxml.Mess { - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), + Version = item.Version, }; return m1; } diff --git a/SabreTools.Serialization.CrossModel/Mess.Serializer.cs b/SabreTools.Serialization.CrossModel/Mess.Serializer.cs index b35d23a6..05472a90 100644 --- a/SabreTools.Serialization.CrossModel/Mess.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Mess.Serializer.cs @@ -31,7 +31,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.VersionKey] = item.Version, + Version = item.Version, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index dd7199e8..554073a1 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -38,29 +38,29 @@ namespace SabreTools.Serialization.CrossModel if (item.Name is not null || item.ContainsKey(Data.Models.Metadata.Header.ImFolderKey) - || item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey) - || item.ContainsKey(Data.Models.Metadata.Header.SystemKey) + || item.DatVersion != null + || item.System != null || item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsWidthKey) || item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsHeightKey) || item.ContainsKey(Data.Models.Metadata.Header.InfosKey) || item.ContainsKey(Data.Models.Metadata.Header.CanOpenKey) || item.ContainsKey(Data.Models.Metadata.Header.NewDatKey) || item.ContainsKey(Data.Models.Metadata.Header.SearchKey) - || item.ContainsKey(Data.Models.Metadata.Header.RomTitleKey)) + || item.RomTitle != null) { dat.Configuration = new Configuration { DatName = item.Name, ImFolder = item.ReadString(Data.Models.Metadata.Header.ImFolderKey), - DatVersion = item.ReadString(Data.Models.Metadata.Header.DatVersionKey), - System = item.ReadString(Data.Models.Metadata.Header.SystemKey), + DatVersion = item.DatVersion, + System = item.System, ScreenshotsWidth = item.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey), ScreenshotsHeight = item.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey), Infos = item.Read(Data.Models.Metadata.Header.InfosKey), CanOpen = item.Read(Data.Models.Metadata.Header.CanOpenKey), NewDat = item.Read(Data.Models.Metadata.Header.NewDatKey), Search = item.Read(Data.Models.Metadata.Header.SearchKey), - RomTitle = item.ReadString(Data.Models.Metadata.Header.RomTitleKey), + RomTitle = item.RomTitle, }; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index c8032e8d..70436b2f 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -39,15 +39,15 @@ namespace SabreTools.Serialization.CrossModel { header.Name = item.Configuration.DatName; header[Data.Models.Metadata.Header.ImFolderKey] = item.Configuration.ImFolder; - header[Data.Models.Metadata.Header.DatVersionKey] = item.Configuration.DatVersion; - header[Data.Models.Metadata.Header.SystemKey] = item.Configuration.System; + header.DatVersion = item.Configuration.DatVersion; + header.System = item.Configuration.System; header[Data.Models.Metadata.Header.ScreenshotsWidthKey] = item.Configuration.ScreenshotsWidth; header[Data.Models.Metadata.Header.ScreenshotsHeightKey] = item.Configuration.ScreenshotsHeight; header[Data.Models.Metadata.Header.InfosKey] = item.Configuration.Infos; header[Data.Models.Metadata.Header.CanOpenKey] = item.Configuration.CanOpen; header[Data.Models.Metadata.Header.NewDatKey] = item.Configuration.NewDat; header[Data.Models.Metadata.Header.SearchKey] = item.Configuration.Search; - header[Data.Models.Metadata.Header.RomTitleKey] = item.Configuration.RomTitle; + header.RomTitle = item.Configuration.RomTitle; } if (item.GUI is not null) diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index bbfc7d76..3572044c 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -28,7 +28,7 @@ namespace SabreTools.Serialization.CrossModel { var softwareDb = new SoftwareDb { - Timestamp = item.ReadString(Data.Models.Metadata.Header.TimestampKey), + Timestamp = item.Timestamp, }; return softwareDb; } diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index d621cadb..63e096e5 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - [Data.Models.Metadata.Header.TimestampKey] = item.Timestamp, + Timestamp = item.Timestamp, }; return header; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index ddadc837..b5ffef2d 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -33,46 +33,46 @@ namespace SabreTools.Serialization.CrossModel { var metadataFile = new MetadataFile(); - if (item.ContainsKey(Data.Models.Metadata.Header.AuthorKey) - || item.ContainsKey(Data.Models.Metadata.Header.VersionKey) - || item.ContainsKey(Data.Models.Metadata.Header.EmailKey) - || item.ContainsKey(Data.Models.Metadata.Header.HomepageKey) - || item.ContainsKey(Data.Models.Metadata.Header.UrlKey) - || item.ContainsKey(Data.Models.Metadata.Header.DateKey) - || item.ContainsKey(Data.Models.Metadata.Header.CommentKey)) + if (item.Author != null + || item.Version != null + || item.Email != null + || item.Homepage != null + || item.Url != null + || item.Date != null + || item.Comment != null) { metadataFile.Credits = new Credits { - Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey), - Version = item.ReadString(Data.Models.Metadata.Header.VersionKey), - Email = item.ReadString(Data.Models.Metadata.Header.EmailKey), - Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey), - Url = item.ReadString(Data.Models.Metadata.Header.UrlKey), - Date = item.ReadString(Data.Models.Metadata.Header.DateKey), - Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), + Author = item.Author, + Version = item.Version, + Email = item.Email, + Homepage = item.Homepage, + Url = item.Url, + Date = item.Date, + Comment = item.Comment, }; } - if (item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey) - || item.ContainsKey(Data.Models.Metadata.Header.PluginKey) + if (item.DatVersion != null + || item.Plugin != null || item.ForceMerging != Data.Models.Metadata.MergingFlag.None) { metadataFile.Dat = new Dat { - Version = item.ReadString(Data.Models.Metadata.Header.DatVersionKey), - Plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey), + Version = item.DatVersion, + Plugin = item.Plugin, Split = item.ForceMerging == Data.Models.Metadata.MergingFlag.Split ? "yes" : "no", Merge = item.ForceMerging == Data.Models.Metadata.MergingFlag.Merged ? "yes" : "no", }; } - if (item.ContainsKey(Data.Models.Metadata.Header.RefNameKey) - || item.ContainsKey(Data.Models.Metadata.Header.EmulatorVersionKey)) + if (item.RefName != null + || item.EmulatorVersion != null) { metadataFile.Emulator = new Emulator { - RefName = item.ReadString(Data.Models.Metadata.Header.RefNameKey), - Version = item.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey), + RefName = item.RefName, + Version = item.EmulatorVersion, }; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 1de290bb..d6eff885 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -34,19 +34,19 @@ namespace SabreTools.Serialization.CrossModel if (item.Credits is not null) { - header[Data.Models.Metadata.Header.AuthorKey] = item.Credits.Author; - header[Data.Models.Metadata.Header.VersionKey] = item.Credits.Version; - header[Data.Models.Metadata.Header.EmailKey] = item.Credits.Email; - header[Data.Models.Metadata.Header.HomepageKey] = item.Credits.Homepage; - header[Data.Models.Metadata.Header.UrlKey] = item.Credits.Url; - header[Data.Models.Metadata.Header.DateKey] = item.Credits.Date; - header[Data.Models.Metadata.Header.CommentKey] = item.Credits.Comment; + header.Author = item.Credits.Author; + header.Version = item.Credits.Version; + header.Email = item.Credits.Email; + header.Homepage = item.Credits.Homepage; + header.Url = item.Credits.Url; + header.Date = item.Credits.Date; + header.Comment = item.Credits.Comment; } if (item.Dat is not null) { - header[Data.Models.Metadata.Header.DatVersionKey] = item.Dat.Version; - header[Data.Models.Metadata.Header.PluginKey] = item.Dat.Plugin; + header.DatVersion = item.Dat.Version; + header.Plugin = item.Dat.Plugin; if (item.Dat.Split == "yes" || item.Dat.Split == "1") header.ForceMerging = Data.Models.Metadata.MergingFlag.Split; @@ -56,8 +56,8 @@ namespace SabreTools.Serialization.CrossModel if (item.Emulator is not null) { - header[Data.Models.Metadata.Header.RefNameKey] = item.Emulator.RefName; - header[Data.Models.Metadata.Header.EmulatorVersionKey] = item.Emulator.Version; + header.RefName = item.Emulator.RefName; + header.EmulatorVersion = item.Emulator.Version; } return header; diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 0ecfc247..5d388721 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -30,7 +30,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - Notes = item.ReadString(Data.Models.Metadata.Header.NotesKey), + Notes = item.Notes, }; return softwareList; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 6645f2aa..64403020 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -34,7 +34,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - [Data.Models.Metadata.Header.NotesKey] = item.Notes, + Notes = item.Notes, }; return header; }