diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
index 511c9165..149f2e11 100644
--- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
+++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
@@ -2734,6 +2734,67 @@ namespace SabreTools.Data.Extensions.Test
Assert.Equal(expected, actual);
}
+ [Theory]
+ [InlineData(null, ItemType.NULL)]
+ [InlineData("adjuster", ItemType.Adjuster)]
+ [InlineData("analog", ItemType.Analog)]
+ [InlineData("archive", ItemType.Archive)]
+ [InlineData("biosset", ItemType.BiosSet)]
+ [InlineData("blank", ItemType.Blank)]
+ [InlineData("chip", ItemType.Chip)]
+ [InlineData("condition", ItemType.Condition)]
+ [InlineData("configuration", ItemType.Configuration)]
+ [InlineData("conflocation", ItemType.ConfLocation)]
+ [InlineData("confsetting", ItemType.ConfSetting)]
+ [InlineData("control", ItemType.Control)]
+ [InlineData("dataarea", ItemType.DataArea)]
+ [InlineData("device", ItemType.Device)]
+ [InlineData("deviceref", ItemType.DeviceRef)]
+ [InlineData("device_ref", ItemType.DeviceRef)]
+ [InlineData("diplocation", ItemType.DipLocation)]
+ [InlineData("dipswitch", ItemType.DipSwitch)]
+ [InlineData("dipvalue", ItemType.DipValue)]
+ [InlineData("disk", ItemType.Disk)]
+ [InlineData("diskarea", ItemType.DiskArea)]
+ [InlineData("display", ItemType.Display)]
+ [InlineData("driver", ItemType.Driver)]
+ [InlineData("extension", ItemType.Extension)]
+ [InlineData("feature", ItemType.Feature)]
+ [InlineData("file", ItemType.File)]
+ [InlineData("info", ItemType.Info)]
+ [InlineData("input", ItemType.Input)]
+ [InlineData("instance", ItemType.Instance)]
+ [InlineData("media", ItemType.Media)]
+ [InlineData("part", ItemType.Part)]
+ [InlineData("partfeature", ItemType.PartFeature)]
+ [InlineData("part_feature", ItemType.PartFeature)]
+ [InlineData("port", ItemType.Port)]
+ [InlineData("ramoption", ItemType.RamOption)]
+ [InlineData("ram_option", ItemType.RamOption)]
+ [InlineData("release", ItemType.Release)]
+ [InlineData("releasedetails", ItemType.ReleaseDetails)]
+ [InlineData("release_details", ItemType.ReleaseDetails)]
+ [InlineData("rom", ItemType.Rom)]
+ [InlineData("sample", ItemType.Sample)]
+ [InlineData("serials", ItemType.Serials)]
+ [InlineData("sharedfeat", ItemType.SharedFeat)]
+ [InlineData("shared_feat", ItemType.SharedFeat)]
+ [InlineData("sharedfeature", ItemType.SharedFeat)]
+ [InlineData("shared_feature", ItemType.SharedFeat)]
+ [InlineData("slot", ItemType.Slot)]
+ [InlineData("slotoption", ItemType.SlotOption)]
+ [InlineData("slot_option", ItemType.SlotOption)]
+ [InlineData("softwarelist", ItemType.SoftwareList)]
+ [InlineData("software_list", ItemType.SoftwareList)]
+ [InlineData("sound", ItemType.Sound)]
+ [InlineData("sourcedetails", ItemType.SourceDetails)]
+ [InlineData("source_details", ItemType.SourceDetails)]
+ public void AsItemTypeTest(string? field, ItemType expected)
+ {
+ ItemType actual = field.AsItemType();
+ Assert.Equal(expected, actual);
+ }
+
[Theory]
[InlineData(null, null)]
[InlineData("load16_byte", LoadFlag.Load16Byte)]
@@ -3074,6 +3135,57 @@ namespace SabreTools.Data.Extensions.Test
Assert.Equal(expected, actual);
}
+ [Theory]
+ [InlineData(ItemType.NULL, null)]
+ [InlineData(ItemType.Adjuster, "adjuster")]
+ [InlineData(ItemType.Analog, "analog")]
+ [InlineData(ItemType.Archive, "archive")]
+ [InlineData(ItemType.BiosSet, "biosset")]
+ [InlineData(ItemType.Blank, "blank")]
+ [InlineData(ItemType.Chip, "chip")]
+ [InlineData(ItemType.Condition, "condition")]
+ [InlineData(ItemType.Configuration, "configuration")]
+ [InlineData(ItemType.ConfLocation, "conflocation")]
+ [InlineData(ItemType.ConfSetting, "confsetting")]
+ [InlineData(ItemType.Control, "control")]
+ [InlineData(ItemType.DataArea, "dataarea")]
+ [InlineData(ItemType.Device, "device")]
+ [InlineData(ItemType.DeviceRef, "device_ref")]
+ [InlineData(ItemType.DipLocation, "diplocation")]
+ [InlineData(ItemType.DipSwitch, "dipswitch")]
+ [InlineData(ItemType.DipValue, "dipvalue")]
+ [InlineData(ItemType.Disk, "disk")]
+ [InlineData(ItemType.DiskArea, "diskarea")]
+ [InlineData(ItemType.Display, "display")]
+ [InlineData(ItemType.Driver, "driver")]
+ [InlineData(ItemType.Extension, "extension")]
+ [InlineData(ItemType.Feature, "feature")]
+ [InlineData(ItemType.File, "file")]
+ [InlineData(ItemType.Info, "info")]
+ [InlineData(ItemType.Input, "input")]
+ [InlineData(ItemType.Instance, "instance")]
+ [InlineData(ItemType.Media, "media")]
+ [InlineData(ItemType.Part, "part")]
+ [InlineData(ItemType.PartFeature, "part_feature")]
+ [InlineData(ItemType.Port, "port")]
+ [InlineData(ItemType.RamOption, "ramoption")]
+ [InlineData(ItemType.Release, "release")]
+ [InlineData(ItemType.ReleaseDetails, "release_details")]
+ [InlineData(ItemType.Rom, "rom")]
+ [InlineData(ItemType.Sample, "sample")]
+ [InlineData(ItemType.Serials, "serials")]
+ [InlineData(ItemType.SharedFeat, "sharedfeat")]
+ [InlineData(ItemType.Slot, "slot")]
+ [InlineData(ItemType.SlotOption, "slotoption")]
+ [InlineData(ItemType.SoftwareList, "softwarelist")]
+ [InlineData(ItemType.Sound, "sound")]
+ [InlineData(ItemType.SourceDetails, "source_details")]
+ public void FromItemTypeTest(ItemType field, string? expected)
+ {
+ string? actual = field.AsStringValue();
+ Assert.Equal(expected, actual);
+ }
+
[Theory]
[InlineData((LoadFlag)int.MaxValue, null)]
[InlineData(LoadFlag.Load16Byte, "load16_byte")]
diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs
index 375e866c..80b2547c 100644
--- a/SabreTools.Data.Extensions/MetadataExtensions.cs
+++ b/SabreTools.Data.Extensions/MetadataExtensions.cs
@@ -887,6 +887,68 @@ namespace SabreTools.Data.Extensions
};
}
+ ///
+ /// Get the enum value for an input string, if possible
+ ///
+ /// String value to parse/param>
+ /// Enum value representing the input, default on error
+ public static ItemType AsItemType(this string? value)
+ {
+ return value?.ToLowerInvariant() switch
+ {
+ // "Actionable" item types
+ "rom" => ItemType.Rom,
+ "disk" => ItemType.Disk,
+ "file" => ItemType.File,
+ "media" => ItemType.Media,
+
+ // "Auxiliary" item types
+ "adjuster" => ItemType.Adjuster,
+ "analog" => ItemType.Analog,
+ "archive" => ItemType.Archive,
+ "biosset" => ItemType.BiosSet,
+ "chip" => ItemType.Chip,
+ "condition" => ItemType.Condition,
+ "configuration" => ItemType.Configuration,
+ "conflocation" => ItemType.ConfLocation,
+ "confsetting" => ItemType.ConfSetting,
+ "control" => ItemType.Control,
+ "dataarea" => ItemType.DataArea,
+ "device" => ItemType.Device,
+ "device_ref" or "deviceref" => ItemType.DeviceRef,
+ "diplocation" => ItemType.DipLocation,
+ "dipswitch" => ItemType.DipSwitch,
+ "dipvalue" => ItemType.DipValue,
+ "diskarea" => ItemType.DiskArea,
+ "display" => ItemType.Display,
+ "driver" => ItemType.Driver,
+ "dump" => ItemType.Dump,
+ "extension" => ItemType.Extension,
+ "feature" => ItemType.Feature,
+ "info" => ItemType.Info,
+ "input" => ItemType.Input,
+ "instance" => ItemType.Instance,
+ "original" => ItemType.Original,
+ "part" => ItemType.Part,
+ "part_feature" or "partfeature" => ItemType.PartFeature,
+ "port" => ItemType.Port,
+ "ramoption" or "ram_option" => ItemType.RamOption,
+ "release" => ItemType.Release,
+ "release_details" or "releasedetails" => ItemType.ReleaseDetails,
+ "sample" => ItemType.Sample,
+ "serials" => ItemType.Serials,
+ "sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => ItemType.SharedFeat,
+ "slot" => ItemType.Slot,
+ "slotoption" or "slot_option" => ItemType.SlotOption,
+ "softwarelist" or "software_list" => ItemType.SoftwareList,
+ "sound" => ItemType.Sound,
+ "source_details" or "sourcedetails" => ItemType.SourceDetails,
+ "video" => ItemType.Video,
+ "blank" => ItemType.Blank,
+ _ => ItemType.NULL,
+ };
+ }
+
///
/// Get the enum value for an input string, if possible
///
@@ -1308,6 +1370,70 @@ namespace SabreTools.Data.Extensions
};
}
+ ///
+ /// Get the string value for an input enum, if possible
+ ///
+ /// Enum value to parse/param>
+ /// String value representing the input, default on error
+ public static string? AsStringValue(this ItemType value)
+ {
+ return value switch
+ {
+ // "Actionable" item types
+ ItemType.Rom => "rom",
+ ItemType.Disk => "disk",
+ ItemType.File => "file",
+ ItemType.Media => "media",
+
+ // "Auxiliary" item types
+ ItemType.Adjuster => "adjuster",
+ ItemType.Analog => "analog",
+ ItemType.Archive => "archive",
+ ItemType.BiosSet => "biosset",
+ ItemType.Chip => "chip",
+ ItemType.Condition => "condition",
+ ItemType.Configuration => "configuration",
+ ItemType.ConfLocation => "conflocation",
+ ItemType.ConfSetting => "confsetting",
+ ItemType.Control => "control",
+ ItemType.DataArea => "dataarea",
+ ItemType.Device => "device",
+ ItemType.DeviceRef => "device_ref",
+ ItemType.DipLocation => "diplocation",
+ ItemType.DipSwitch => "dipswitch",
+ ItemType.DipValue => "dipvalue",
+ ItemType.DiskArea => "diskarea",
+ ItemType.Display => "display",
+ ItemType.Driver => "driver",
+ ItemType.Dump => "dump",
+ ItemType.Extension => "extension",
+ ItemType.Feature => "feature",
+ ItemType.Info => "info",
+ ItemType.Input => "input",
+ ItemType.Instance => "instance",
+ ItemType.Original => "original",
+ ItemType.Part => "part",
+ ItemType.PartFeature => "part_feature",
+ ItemType.Port => "port",
+ ItemType.RamOption => "ramoption",
+ ItemType.Release => "release",
+ ItemType.ReleaseDetails => "release_details",
+ ItemType.Sample => "sample",
+ ItemType.Serials => "serials",
+ ItemType.SharedFeat => "sharedfeat",
+ ItemType.Slot => "slot",
+ ItemType.SlotOption => "slotoption",
+ ItemType.SoftwareList => "softwarelist",
+ ItemType.Sound => "sound",
+ ItemType.SourceDetails => "source_details",
+ ItemType.Video => "video",
+ ItemType.Blank => "blank",
+
+ ItemType.NULL => null,
+ _ => null,
+ };
+ }
+
///
/// Get the string value for an input enum, if possible
///
diff --git a/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs b/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs
index 26473563..fa2c4e86 100644
--- a/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs
+++ b/SabreTools.Metadata.DatItems.Test/ExtensionsTests.cs
@@ -6,67 +6,6 @@ namespace SabreTools.Metadata.DatItems.Test
{
#region String to Enum
- [Theory]
- [InlineData(null, Data.Models.Metadata.ItemType.NULL)]
- [InlineData("adjuster", Data.Models.Metadata.ItemType.Adjuster)]
- [InlineData("analog", Data.Models.Metadata.ItemType.Analog)]
- [InlineData("archive", Data.Models.Metadata.ItemType.Archive)]
- [InlineData("biosset", Data.Models.Metadata.ItemType.BiosSet)]
- [InlineData("blank", Data.Models.Metadata.ItemType.Blank)]
- [InlineData("chip", Data.Models.Metadata.ItemType.Chip)]
- [InlineData("condition", Data.Models.Metadata.ItemType.Condition)]
- [InlineData("configuration", Data.Models.Metadata.ItemType.Configuration)]
- [InlineData("conflocation", Data.Models.Metadata.ItemType.ConfLocation)]
- [InlineData("confsetting", Data.Models.Metadata.ItemType.ConfSetting)]
- [InlineData("control", Data.Models.Metadata.ItemType.Control)]
- [InlineData("dataarea", Data.Models.Metadata.ItemType.DataArea)]
- [InlineData("device", Data.Models.Metadata.ItemType.Device)]
- [InlineData("deviceref", Data.Models.Metadata.ItemType.DeviceRef)]
- [InlineData("device_ref", Data.Models.Metadata.ItemType.DeviceRef)]
- [InlineData("diplocation", Data.Models.Metadata.ItemType.DipLocation)]
- [InlineData("dipswitch", Data.Models.Metadata.ItemType.DipSwitch)]
- [InlineData("dipvalue", Data.Models.Metadata.ItemType.DipValue)]
- [InlineData("disk", Data.Models.Metadata.ItemType.Disk)]
- [InlineData("diskarea", Data.Models.Metadata.ItemType.DiskArea)]
- [InlineData("display", Data.Models.Metadata.ItemType.Display)]
- [InlineData("driver", Data.Models.Metadata.ItemType.Driver)]
- [InlineData("extension", Data.Models.Metadata.ItemType.Extension)]
- [InlineData("feature", Data.Models.Metadata.ItemType.Feature)]
- [InlineData("file", Data.Models.Metadata.ItemType.File)]
- [InlineData("info", Data.Models.Metadata.ItemType.Info)]
- [InlineData("input", Data.Models.Metadata.ItemType.Input)]
- [InlineData("instance", Data.Models.Metadata.ItemType.Instance)]
- [InlineData("media", Data.Models.Metadata.ItemType.Media)]
- [InlineData("part", Data.Models.Metadata.ItemType.Part)]
- [InlineData("partfeature", Data.Models.Metadata.ItemType.PartFeature)]
- [InlineData("part_feature", Data.Models.Metadata.ItemType.PartFeature)]
- [InlineData("port", Data.Models.Metadata.ItemType.Port)]
- [InlineData("ramoption", Data.Models.Metadata.ItemType.RamOption)]
- [InlineData("ram_option", Data.Models.Metadata.ItemType.RamOption)]
- [InlineData("release", Data.Models.Metadata.ItemType.Release)]
- [InlineData("releasedetails", Data.Models.Metadata.ItemType.ReleaseDetails)]
- [InlineData("release_details", Data.Models.Metadata.ItemType.ReleaseDetails)]
- [InlineData("rom", Data.Models.Metadata.ItemType.Rom)]
- [InlineData("sample", Data.Models.Metadata.ItemType.Sample)]
- [InlineData("serials", Data.Models.Metadata.ItemType.Serials)]
- [InlineData("sharedfeat", Data.Models.Metadata.ItemType.SharedFeat)]
- [InlineData("shared_feat", Data.Models.Metadata.ItemType.SharedFeat)]
- [InlineData("sharedfeature", Data.Models.Metadata.ItemType.SharedFeat)]
- [InlineData("shared_feature", Data.Models.Metadata.ItemType.SharedFeat)]
- [InlineData("slot", Data.Models.Metadata.ItemType.Slot)]
- [InlineData("slotoption", Data.Models.Metadata.ItemType.SlotOption)]
- [InlineData("slot_option", Data.Models.Metadata.ItemType.SlotOption)]
- [InlineData("softwarelist", Data.Models.Metadata.ItemType.SoftwareList)]
- [InlineData("software_list", Data.Models.Metadata.ItemType.SoftwareList)]
- [InlineData("sound", Data.Models.Metadata.ItemType.Sound)]
- [InlineData("sourcedetails", Data.Models.Metadata.ItemType.SourceDetails)]
- [InlineData("source_details", Data.Models.Metadata.ItemType.SourceDetails)]
- public void AsItemTypeTest(string? field, Data.Models.Metadata.ItemType expected)
- {
- Data.Models.Metadata.ItemType actual = field.AsItemType();
- Assert.Equal(expected, actual);
- }
-
[Theory]
[InlineData(null, MachineType.None)]
[InlineData("none", MachineType.None)]
@@ -82,60 +21,5 @@ namespace SabreTools.Metadata.DatItems.Test
}
#endregion
-
- #region Enum to String
-
- [Theory]
- [InlineData(Data.Models.Metadata.ItemType.NULL, null)]
- [InlineData(Data.Models.Metadata.ItemType.Adjuster, "adjuster")]
- [InlineData(Data.Models.Metadata.ItemType.Analog, "analog")]
- [InlineData(Data.Models.Metadata.ItemType.Archive, "archive")]
- [InlineData(Data.Models.Metadata.ItemType.BiosSet, "biosset")]
- [InlineData(Data.Models.Metadata.ItemType.Blank, "blank")]
- [InlineData(Data.Models.Metadata.ItemType.Chip, "chip")]
- [InlineData(Data.Models.Metadata.ItemType.Condition, "condition")]
- [InlineData(Data.Models.Metadata.ItemType.Configuration, "configuration")]
- [InlineData(Data.Models.Metadata.ItemType.ConfLocation, "conflocation")]
- [InlineData(Data.Models.Metadata.ItemType.ConfSetting, "confsetting")]
- [InlineData(Data.Models.Metadata.ItemType.Control, "control")]
- [InlineData(Data.Models.Metadata.ItemType.DataArea, "dataarea")]
- [InlineData(Data.Models.Metadata.ItemType.Device, "device")]
- [InlineData(Data.Models.Metadata.ItemType.DeviceRef, "device_ref")]
- [InlineData(Data.Models.Metadata.ItemType.DipLocation, "diplocation")]
- [InlineData(Data.Models.Metadata.ItemType.DipSwitch, "dipswitch")]
- [InlineData(Data.Models.Metadata.ItemType.DipValue, "dipvalue")]
- [InlineData(Data.Models.Metadata.ItemType.Disk, "disk")]
- [InlineData(Data.Models.Metadata.ItemType.DiskArea, "diskarea")]
- [InlineData(Data.Models.Metadata.ItemType.Display, "display")]
- [InlineData(Data.Models.Metadata.ItemType.Driver, "driver")]
- [InlineData(Data.Models.Metadata.ItemType.Extension, "extension")]
- [InlineData(Data.Models.Metadata.ItemType.Feature, "feature")]
- [InlineData(Data.Models.Metadata.ItemType.File, "file")]
- [InlineData(Data.Models.Metadata.ItemType.Info, "info")]
- [InlineData(Data.Models.Metadata.ItemType.Input, "input")]
- [InlineData(Data.Models.Metadata.ItemType.Instance, "instance")]
- [InlineData(Data.Models.Metadata.ItemType.Media, "media")]
- [InlineData(Data.Models.Metadata.ItemType.Part, "part")]
- [InlineData(Data.Models.Metadata.ItemType.PartFeature, "part_feature")]
- [InlineData(Data.Models.Metadata.ItemType.Port, "port")]
- [InlineData(Data.Models.Metadata.ItemType.RamOption, "ramoption")]
- [InlineData(Data.Models.Metadata.ItemType.Release, "release")]
- [InlineData(Data.Models.Metadata.ItemType.ReleaseDetails, "release_details")]
- [InlineData(Data.Models.Metadata.ItemType.Rom, "rom")]
- [InlineData(Data.Models.Metadata.ItemType.Sample, "sample")]
- [InlineData(Data.Models.Metadata.ItemType.Serials, "serials")]
- [InlineData(Data.Models.Metadata.ItemType.SharedFeat, "sharedfeat")]
- [InlineData(Data.Models.Metadata.ItemType.Slot, "slot")]
- [InlineData(Data.Models.Metadata.ItemType.SlotOption, "slotoption")]
- [InlineData(Data.Models.Metadata.ItemType.SoftwareList, "softwarelist")]
- [InlineData(Data.Models.Metadata.ItemType.Sound, "sound")]
- [InlineData(Data.Models.Metadata.ItemType.SourceDetails, "source_details")]
- public void FromItemTypeTest(Data.Models.Metadata.ItemType field, string? expected)
- {
- string? actual = field.AsStringValue();
- Assert.Equal(expected, actual);
- }
-
- #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems/Extensions.cs b/SabreTools.Metadata.DatItems/Extensions.cs
index 5a7f0def..4be3682b 100644
--- a/SabreTools.Metadata.DatItems/Extensions.cs
+++ b/SabreTools.Metadata.DatItems/Extensions.cs
@@ -4,68 +4,6 @@ namespace SabreTools.Metadata.DatItems
{
#region String to Enum
- ///
- /// Get the enum value for an input string, if possible
- ///
- /// String value to parse/param>
- /// Enum value representing the input, default on error
- public static Data.Models.Metadata.ItemType AsItemType(this string? value)
- {
- return value?.ToLowerInvariant() switch
- {
- // "Actionable" item types
- "rom" => Data.Models.Metadata.ItemType.Rom,
- "disk" => Data.Models.Metadata.ItemType.Disk,
- "file" => Data.Models.Metadata.ItemType.File,
- "media" => Data.Models.Metadata.ItemType.Media,
-
- // "Auxiliary" item types
- "adjuster" => Data.Models.Metadata.ItemType.Adjuster,
- "analog" => Data.Models.Metadata.ItemType.Analog,
- "archive" => Data.Models.Metadata.ItemType.Archive,
- "biosset" => Data.Models.Metadata.ItemType.BiosSet,
- "chip" => Data.Models.Metadata.ItemType.Chip,
- "condition" => Data.Models.Metadata.ItemType.Condition,
- "configuration" => Data.Models.Metadata.ItemType.Configuration,
- "conflocation" => Data.Models.Metadata.ItemType.ConfLocation,
- "confsetting" => Data.Models.Metadata.ItemType.ConfSetting,
- "control" => Data.Models.Metadata.ItemType.Control,
- "dataarea" => Data.Models.Metadata.ItemType.DataArea,
- "device" => Data.Models.Metadata.ItemType.Device,
- "device_ref" or "deviceref" => Data.Models.Metadata.ItemType.DeviceRef,
- "diplocation" => Data.Models.Metadata.ItemType.DipLocation,
- "dipswitch" => Data.Models.Metadata.ItemType.DipSwitch,
- "dipvalue" => Data.Models.Metadata.ItemType.DipValue,
- "diskarea" => Data.Models.Metadata.ItemType.DiskArea,
- "display" => Data.Models.Metadata.ItemType.Display,
- "driver" => Data.Models.Metadata.ItemType.Driver,
- "dump" => Data.Models.Metadata.ItemType.Dump,
- "extension" => Data.Models.Metadata.ItemType.Extension,
- "feature" => Data.Models.Metadata.ItemType.Feature,
- "info" => Data.Models.Metadata.ItemType.Info,
- "input" => Data.Models.Metadata.ItemType.Input,
- "instance" => Data.Models.Metadata.ItemType.Instance,
- "original" => Data.Models.Metadata.ItemType.Original,
- "part" => Data.Models.Metadata.ItemType.Part,
- "part_feature" or "partfeature" => Data.Models.Metadata.ItemType.PartFeature,
- "port" => Data.Models.Metadata.ItemType.Port,
- "ramoption" or "ram_option" => Data.Models.Metadata.ItemType.RamOption,
- "release" => Data.Models.Metadata.ItemType.Release,
- "release_details" or "releasedetails" => Data.Models.Metadata.ItemType.ReleaseDetails,
- "sample" => Data.Models.Metadata.ItemType.Sample,
- "serials" => Data.Models.Metadata.ItemType.Serials,
- "sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => Data.Models.Metadata.ItemType.SharedFeat,
- "slot" => Data.Models.Metadata.ItemType.Slot,
- "slotoption" or "slot_option" => Data.Models.Metadata.ItemType.SlotOption,
- "softwarelist" or "software_list" => Data.Models.Metadata.ItemType.SoftwareList,
- "sound" => Data.Models.Metadata.ItemType.Sound,
- "source_details" or "sourcedetails" => Data.Models.Metadata.ItemType.SourceDetails,
- "video" => Data.Models.Metadata.ItemType.Video,
- "blank" => Data.Models.Metadata.ItemType.Blank,
- _ => Data.Models.Metadata.ItemType.NULL,
- };
- }
-
///
/// Get the enum value for an input string, if possible
///
@@ -84,73 +22,5 @@ namespace SabreTools.Metadata.DatItems
}
#endregion
-
- #region Enum to String
-
- ///
- /// Get the string value for an input enum, if possible
- ///
- /// Enum value to parse/param>
- /// String value representing the input, default on error
- public static string? AsStringValue(this Data.Models.Metadata.ItemType value)
- {
- return value switch
- {
- // "Actionable" item types
- Data.Models.Metadata.ItemType.Rom => "rom",
- Data.Models.Metadata.ItemType.Disk => "disk",
- Data.Models.Metadata.ItemType.File => "file",
- Data.Models.Metadata.ItemType.Media => "media",
-
- // "Auxiliary" item types
- Data.Models.Metadata.ItemType.Adjuster => "adjuster",
- Data.Models.Metadata.ItemType.Analog => "analog",
- Data.Models.Metadata.ItemType.Archive => "archive",
- Data.Models.Metadata.ItemType.BiosSet => "biosset",
- Data.Models.Metadata.ItemType.Chip => "chip",
- Data.Models.Metadata.ItemType.Condition => "condition",
- Data.Models.Metadata.ItemType.Configuration => "configuration",
- Data.Models.Metadata.ItemType.ConfLocation => "conflocation",
- Data.Models.Metadata.ItemType.ConfSetting => "confsetting",
- Data.Models.Metadata.ItemType.Control => "control",
- Data.Models.Metadata.ItemType.DataArea => "dataarea",
- Data.Models.Metadata.ItemType.Device => "device",
- Data.Models.Metadata.ItemType.DeviceRef => "device_ref",
- Data.Models.Metadata.ItemType.DipLocation => "diplocation",
- Data.Models.Metadata.ItemType.DipSwitch => "dipswitch",
- Data.Models.Metadata.ItemType.DipValue => "dipvalue",
- Data.Models.Metadata.ItemType.DiskArea => "diskarea",
- Data.Models.Metadata.ItemType.Display => "display",
- Data.Models.Metadata.ItemType.Driver => "driver",
- Data.Models.Metadata.ItemType.Dump => "dump",
- Data.Models.Metadata.ItemType.Extension => "extension",
- Data.Models.Metadata.ItemType.Feature => "feature",
- Data.Models.Metadata.ItemType.Info => "info",
- Data.Models.Metadata.ItemType.Input => "input",
- Data.Models.Metadata.ItemType.Instance => "instance",
- Data.Models.Metadata.ItemType.Original => "original",
- Data.Models.Metadata.ItemType.Part => "part",
- Data.Models.Metadata.ItemType.PartFeature => "part_feature",
- Data.Models.Metadata.ItemType.Port => "port",
- Data.Models.Metadata.ItemType.RamOption => "ramoption",
- Data.Models.Metadata.ItemType.Release => "release",
- Data.Models.Metadata.ItemType.ReleaseDetails => "release_details",
- Data.Models.Metadata.ItemType.Sample => "sample",
- Data.Models.Metadata.ItemType.Serials => "serials",
- Data.Models.Metadata.ItemType.SharedFeat => "sharedfeat",
- Data.Models.Metadata.ItemType.Slot => "slot",
- Data.Models.Metadata.ItemType.SlotOption => "slotoption",
- Data.Models.Metadata.ItemType.SoftwareList => "softwarelist",
- Data.Models.Metadata.ItemType.Sound => "sound",
- Data.Models.Metadata.ItemType.SourceDetails => "source_details",
- Data.Models.Metadata.ItemType.Video => "video",
- Data.Models.Metadata.ItemType.Blank => "blank",
-
- Data.Models.Metadata.ItemType.NULL => null,
- _ => null,
- };
- }
-
- #endregion
}
}
diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs
index 244d5ea4..2136f482 100644
--- a/SabreTools.Metadata.Filter/FilterKey.cs
+++ b/SabreTools.Metadata.Filter/FilterKey.cs
@@ -114,7 +114,6 @@ namespace SabreTools.Metadata.Filter
"name",
"soundonly",
"tag",
- "type",
];
///
@@ -172,7 +171,6 @@ namespace SabreTools.Metadata.Filter
"reqbuttons",
"reverse",
"sensitivity",
- "type",
"ways",
"ways2",
"ways3",
@@ -199,7 +197,6 @@ namespace SabreTools.Metadata.Filter
"interface",
"mandatory",
"tag",
- "type",
];
///
@@ -364,6 +361,14 @@ namespace SabreTools.Metadata.Filter
if (string.Equals(itemName, "datitem", StringComparison.OrdinalIgnoreCase)
|| string.Equals(itemName, "item", StringComparison.OrdinalIgnoreCase))
{
+ // Handle item type
+ if (string.Equals(fieldName, "type", StringComparison.OrdinalIgnoreCase))
+ {
+ itemName = "item";
+ fieldName = "type";
+ return true;
+ }
+
// If we get any matches
string localFieldName = fieldName;
string? matchedType = Array.Find(_datItemTypeNames, t => DatItemContainsField(t, localFieldName));
diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs
index 4bef1d2b..cedc5e89 100644
--- a/SabreTools.Metadata.Filter/FilterObject.cs
+++ b/SabreTools.Metadata.Filter/FilterObject.cs
@@ -336,9 +336,16 @@ namespace SabreTools.Metadata.Filter
///
/// Get the check value for a field
///
- /// TODO: Figure out how to not have this hardcoded
private static bool GetCheckValue(object obj, string fieldName, out string? checkValue)
{
+ // Special case for item type
+ if (obj is DatItem datItem
+ && string.Equals(fieldName, "type", StringComparison.OrdinalIgnoreCase))
+ {
+ checkValue = datItem.ItemType.AsStringValue();
+ return true;
+ }
+
switch (obj)
{
case Adjuster item: return GetCheckValue(item, fieldName, out checkValue);
@@ -579,7 +586,6 @@ namespace SabreTools.Metadata.Filter
switch (fieldName)
{
case "chiptype":
- case "type":
checkValue = obj.ChipType?.AsStringValue();
return true;
case "clock":
@@ -715,7 +721,6 @@ namespace SabreTools.Metadata.Filter
checkValue = obj.Buttons?.ToString();
return true;
case "controltype":
- case "type":
checkValue = obj.ControlType?.AsStringValue();
return true;
case "keydelta":
@@ -791,7 +796,6 @@ namespace SabreTools.Metadata.Filter
switch (fieldName)
{
case "devicetype":
- case "type":
checkValue = obj.DeviceType?.AsStringValue();
return true;
case "fixedimage":
@@ -1010,7 +1014,6 @@ namespace SabreTools.Metadata.Filter
case "orientation":
checkValue = obj.Rotate?.AsStringValue();
return true;
- case "type":
case "screen":
checkValue = obj.DisplayType?.AsStringValue();
return true;
@@ -1114,6 +1117,9 @@ namespace SabreTools.Metadata.Filter
{
switch (fieldName)
{
+ case "featuretype":
+ checkValue = obj.FeatureType?.AsStringValue();
+ return true;
case "name":
checkValue = obj.Name;
return true;
@@ -1123,9 +1129,6 @@ namespace SabreTools.Metadata.Filter
case "status":
checkValue = obj.Status?.AsStringValue();
return true;
- case "type":
- checkValue = obj.FeatureType?.AsStringValue();
- return true;
case "value":
checkValue = obj.Value;
return true;
@@ -1264,7 +1267,7 @@ namespace SabreTools.Metadata.Filter
checkValue = obj.Timestamp;
return true;
case "type":
- checkValue = obj.Timestamp;
+ checkValue = obj.Type;
return true;
case "url":
checkValue = obj.Url;
@@ -2357,7 +2360,6 @@ namespace SabreTools.Metadata.Filter
checkValue = obj.Refresh?.ToString();
return true;
case "screen":
- case "type":
checkValue = obj.Screen?.AsStringValue();
return true;
case "width":