Handle item type filtering properly again

This commit is contained in:
Matt Nadareski
2026-04-06 15:03:16 -04:00
parent adfc2cde84
commit 4772768c1f
6 changed files with 258 additions and 259 deletions

View File

@@ -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")]

View File

@@ -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>

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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));

View File

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