mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Handle item type filtering properly again
This commit is contained in:
@@ -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")]
|
||||
|
||||
@@ -887,6 +887,68 @@ namespace SabreTools.Data.Extensions
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the enum value for an input string, if possible
|
||||
/// </summary>
|
||||
/// <param name="value">String value to parse/param>
|
||||
/// <returns>Enum value representing the input, default on error</returns>
|
||||
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,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the enum value for an input string, if possible
|
||||
/// </summary>
|
||||
@@ -1308,6 +1370,70 @@ namespace SabreTools.Data.Extensions
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the string value for an input enum, if possible
|
||||
/// </summary>
|
||||
/// <param name="value">Enum value to parse/param>
|
||||
/// <returns>String value representing the input, default on error</returns>
|
||||
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,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the string value for an input enum, if possible
|
||||
/// </summary>
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,68 +4,6 @@ namespace SabreTools.Metadata.DatItems
|
||||
{
|
||||
#region String to Enum
|
||||
|
||||
/// <summary>
|
||||
/// Get the enum value for an input string, if possible
|
||||
/// </summary>
|
||||
/// <param name="value">String value to parse/param>
|
||||
/// <returns>Enum value representing the input, default on error</returns>
|
||||
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,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the enum value for an input string, if possible
|
||||
/// </summary>
|
||||
@@ -84,73 +22,5 @@ namespace SabreTools.Metadata.DatItems
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Enum to String
|
||||
|
||||
/// <summary>
|
||||
/// Get the string value for an input enum, if possible
|
||||
/// </summary>
|
||||
/// <param name="value">Enum value to parse/param>
|
||||
/// <returns>String value representing the input, default on error</returns>
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +114,6 @@ namespace SabreTools.Metadata.Filter
|
||||
"name",
|
||||
"soundonly",
|
||||
"tag",
|
||||
"type",
|
||||
];
|
||||
|
||||
/// <summary>
|
||||
@@ -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",
|
||||
];
|
||||
|
||||
/// <summary>
|
||||
@@ -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));
|
||||
|
||||
@@ -336,9 +336,16 @@ namespace SabreTools.Metadata.Filter
|
||||
/// <summary>
|
||||
/// Get the check value for a field
|
||||
/// </summary>
|
||||
/// 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":
|
||||
|
||||
Reference in New Issue
Block a user