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":