From fda2e3929618717eccb5dd287209af3f21f34d3f Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 18 Apr 2026 16:34:20 -0400 Subject: [PATCH] The lists of keys are actually useful --- SabreTools.Metadata.Filter/Constants.cs | 794 +++++++++++++++++++++ SabreTools.Metadata.Filter/FilterKey.cs | 874 ++---------------------- 2 files changed, 837 insertions(+), 831 deletions(-) create mode 100644 SabreTools.Metadata.Filter/Constants.cs diff --git a/SabreTools.Metadata.Filter/Constants.cs b/SabreTools.Metadata.Filter/Constants.cs new file mode 100644 index 00000000..5f5c5c85 --- /dev/null +++ b/SabreTools.Metadata.Filter/Constants.cs @@ -0,0 +1,794 @@ +namespace SabreTools.Metadata.Filter +{ + public static class Constants + { + #region Per-Type Accepted Keys + + /// + /// Known keys for Adjuster + /// + public static readonly string[] AdjusterKeys = + [ + "condition.mask", + "condition.relation", + "condition.tag", + "condition.value", + "default", + "name" + ]; + + /// + /// Known keys for Archive + /// + public static readonly string[] ArchiveKeys = + [ + "additional", + "adult", + "alt", + "bios", + "categories", + "clone", + "clonetag", + "complete", + "dat", + "datternote", + "description", + "devstatus", + "gameid1", + "gameid2", + "langchecked", + "languages", + "licensed", + "listed", + "mergeof", + "mergename", + "name", + "namealt", + "number", + "physical", + "pirate", + "private", + "region", + "regparent", + "showlang", + "special1", + "special2", + "stickynote", + "version1", + "version2", + ]; + + /// + /// Known keys for BiosSet + /// + public static readonly string[] BiossetKeys = + [ + "default", + "description", + "name", + ]; + + /// + /// Known keys for Chip + /// + public static readonly string[] ChipKeys = + [ + "chiptype", + "clock", + "flags", + "name", + "soundonly", + "tag", + ]; + + /// + /// Known keys for Configuration + /// + public static readonly string[] ConfigurationKeys = + [ + "condition.mask", + "condition.relation", + "condition.tag", + "condition.value", + "mask", + "name", + "tag", + ]; + + /// + /// Known keys for ConfLocation + /// + public static readonly string[] ConfLocationKeys = + [ + "inverted", + "name", + "number", + ]; + + /// + /// Known keys for ConfSetting + /// + public static readonly string[] ConfSettingKeys = + [ + "condition.mask", + "condition.relation", + "condition.tag", + "condition.value", + "default", + "name", + "value", + ]; + + /// + /// Known keys for Control + /// + public static readonly string[] ControlKeys = + [ + "buttons", + "controltype", + "keydelta", + "maximum", + "minimum", + "player", + "reqbuttons", + "reverse", + "sensitivity", + "ways", + "ways2", + "ways3", + ]; + + /// + /// Known keys for DataArea + /// + public static readonly string[] DataAreaKeys = + [ + "endianness", + "name", + "size", + "width", + ]; + + /// + /// Known keys for Device + /// + public static readonly string[] DeviceKeys = + [ + "devicetype", + "extension.name", + "fixedimage", + "instance.briefname", + "instance.name", + "interface", + "mandatory", + "tag", + ]; + + /// + /// Known keys for DeviceRef + /// + public static readonly string[] DeviceRefKeys = + [ + "name", + ]; + + /// + /// Known keys for DipLocation + /// + public static readonly string[] DipLocationKeys = + [ + "inverted", + "name", + "number", + ]; + + /// + /// Known keys for DipSwitch + /// + public static readonly string[] DipSwitchKeys = + [ + "condition.mask", + "condition.relation", + "condition.tag", + "condition.value", + "default", + "mask", + "name", + "tag", + ]; + + /// + /// Known keys for DipSwitch + /// + public static readonly string[] DipValueKeys = + [ + "condition.mask", + "condition.relation", + "condition.tag", + "condition.value", + "default", + "name", + "value", + ]; + + /// + /// Known keys for Disk + /// + public static readonly string[] DiskKeys = + [ + "flags", + "index", + "md5", + "merge", + "name", + "optional", + "region", + "sha1", + "status", + "writable", + ]; + + /// + /// Known keys for DiskArea + /// + public static readonly string[] DiskAreaKeys = + [ + "name", + ]; + + /// + /// Known keys for Display + /// + public static readonly string[] DisplayKeys = + [ + "aspectx", + "aspecty", + "displaytype", + "flipx", + "freq", + "hbend", + "hbstart", + "height", + "htotal", + "orientation", + "pixclock", + "refresh", + "rotate", + "screen", + "tag", + "vbend", + "vbstart", + "vtotal", + "width", + "x", + "y", + ]; + + /// + /// Known keys for Driver + /// + public static readonly string[] DriverKeys = + [ + "blit", + "cocktail", + "color", + "emulation", + "incomplete", + "nosoundhardware", + "palettesize", + "requiresartwork", + "savestate", + "sound", + "status", + "unofficial", + ]; + + /// + /// Known keys for Feature/PartFeature + /// + public static readonly string[] FeatureKeys = + [ + "featuretype", + "name", + "overall", + "status", + "value", + ]; + + /// + /// Known keys for Header + /// + public static readonly string[] HeaderKeys = + [ + "author", + "biosmode", + "build", + "category", + "comment", + "date", + "datversion", + "debug", + "description", + "email", + "emulatorversion", + "filename", + "forcemerging", + "forcenodump", + "forcepacking", + "forcezipping", + "header", + "headerskipper", + "homepage", + "id", + "imfolder", + "lockbiosmode", + "lockrommode", + "locksamplemode", + "mameconfig", + "name", + "notes", + "plugin", + "refname", + "rommode", + "romtitle", + "rootdir", + "samplemode", + "schemalocation", + "screenshotsheight", + "screenshotswidth", + "skipper", + "system", + "timestamp", + "type", + "url", + "version", + ]; + + /// + /// Known keys for Info + /// + public static readonly string[] InfoKeys = + [ + "name", + "value", + ]; + + /// + /// Known keys for Input + /// + public static readonly string[] InputKeys = + [ + "buttons", + "coins", + "control", + "controlattr", + "players", + "service", + "tilt", + ]; + + /// + /// Known keys for Machine + /// + public static readonly string[] MachineKeys = + [ + "board", + "buttons", + "category", + "cloneof", + "comment", + "company", + "control", + "crc", + "country", + "description", + "developer", + "dirname", + "displaycount", + "displaytype", + "duplicateid", + "emulator", + "enabled", + "extra", + "favorite", + "genmsxid", + "genre", + "hash", + "history", + "id", + "im1crc", + "im2crc", + "imagenumber", + "isbios", + "isdevice", + "ismechanical", + "language", + "location", + "manufacturer", + "name", + "notes", + "playedcount", + "playedtime", + "players", + "publisher", + "ratings", + "rebuildto", + "relatedto", + "releasenumber", + "romof", + "rotation", + "runnable", + "sampleof", + "savetype", + "score", + "source", + "sourcefile", + "sourcerom", + "status", + "subgenre", + "supported", + "system", + "tags", + "titleid", + "type", + "url", + "year", + ]; + + /// + /// Known keys for Media + /// + public static readonly string[] MediaKeys = + [ + "md5", + "name", + "sha1", + "sha256", + "spamsum", + ]; + + /// + /// Known keys for Original + /// + public static readonly string[] OriginalKeys = + [ + "content", + "value", + ]; + + /// + /// Known keys for Part + /// + public static readonly string[] PartKeys = + [ + "interface", + "name", + ]; + + /// + /// Known keys for Port + /// + public static readonly string[] PortKeys = + [ + "analog.mask", + "tag", + ]; + + /// + /// Known keys for RamOption + /// + public static readonly string[] RamOptionKeys = + [ + "content", + "default", + "name", + ]; + + /// + /// Known keys for Release + /// + public static readonly string[] ReleaseKeys = + [ + "date", + "default", + "language", + "name", + "region", + ]; + + /// + /// Known keys for ReleaseDetails + /// + public static readonly string[] ReleaseDetailsKeys = + [ + "appendtonumber", + "archivename", + "category", + "comment", + "date", + "dirname", + "group", + "id", + "nfocrc", + "nfoname", + "nfosize", + "origin", + "originalformat", + "region", + "rominfo", + "tool", + ]; + + /// + /// Known keys for Rom + /// + public static readonly string[] RomKeys = + [ + "album", + "alt_romname", + "alt_title", + "altromname", + "alttitle", + "artist", + "asr_detected_lang", + "asr_detected_lang_conf", + "asr_transcribed_lang", + "asrdetectedlang", + "asrdetectedlangconf", + "asrtranscribedlang", + "bios", + "bitrate", + "bittorrentmagnethash", + "btih", + "cloth_cover_detection_module_version", + "clothcoverdetectionmoduleversion", + "collection-catalog-number", + "collectioncatalognumber", + "comment", + "crc", + "crc16", + "crc32", + "crc64", + "creator", + "date", + "dispose", + "extension", + "filecount", + "fileisavailable", + "flags", + "format", + "header", + "height", + "hocr_char_to_word_hocr_version", + "hocr_char_to_word_module_version", + "hocr_fts_text_hocr_version", + "hocr_fts_text_module_version", + "hocr_pageindex_hocr_version", + "hocr_pageindex_module_version", + "hocrchartowordhocrversion", + "hocrchartowordmoduleversion", + "hocrftstexthocrversion", + "hocrftstextmoduleversion", + "hocrpageindexhocrversion", + "hocrpageindexmoduleversion", + "inverted", + "lastmodifiedtime", + "length", + "loadflag", + "matrix_number", + "matrixnumber", + "md2", + "md4", + "md5", + "mediatype", + "merge", + "mia", + "mtime", + "name", + "ocr", + "ocr_converted", + "ocr_detected_lang", + "ocr_detected_lang_conf", + "ocr_detected_script", + "ocr_detected_script_conf", + "ocr_module_version", + "ocr_parameters", + "offset", + "openmsxmediatype", + "openmsxtype", + "optional", + "original", + "pdf_module_version", + "pdfmoduleversion", + "preview-image", + "previewimage", + "publisher", + "region", + "remark", + "ripemd128", + "ripemd160", + "rotation", + "serial", + "sha1", + "sha256", + "sha384", + "sha512", + "size", + "soundonly", + "source", + "spamsum", + "start", + "status", + "summation", + "tesseractocr", + "tesseractocrconverted", + "tesseractocrdetectedlang", + "tesseractocrdetectedlangconf", + "tesseractocrdetectedscript", + "tesseractocrdetectedscriptconf", + "tesseractocrmoduleversion", + "tesseractocrparameters", + "title", + "track", + "value", + "whisper_asr_module_version", + "whisper_model_hash", + "whisper_model_name", + "whisper_version", + "whisperasrmoduleversion", + "whispermodelhash", + "whispermodelname", + "whisperversion", + "width", + "word_conf_0_10", + "word_conf_11_20", + "word_conf_21_30", + "word_conf_31_40", + "word_conf_41_50", + "word_conf_51_60", + "word_conf_61_70", + "word_conf_71_80", + "word_conf_81_90", + "word_conf_91_100", + "wordconfidenceinterval0to10", + "wordconfidenceinterval11to20", + "wordconfidenceinterval21to30", + "wordconfidenceinterval31to40", + "wordconfidenceinterval41to50", + "wordconfidenceinterval51to60", + "wordconfidenceinterval61to70", + "wordconfidenceinterval71to80", + "wordconfidenceinterval81to90", + "wordconfidenceinterval91to100", + "xxhash3128", + "xxhash364", + ]; + + /// + /// Known keys for Sample + /// + public static readonly string[] SampleKeys = + [ + "name", + ]; + + /// + /// Known keys for Serials + /// + public static readonly string[] SerialsKeys = + [ + "boxbarcode", + "boxserial", + "chipserial", + "digitalserial1", + "digitalserial2", + "lockoutserial", + "mediaserial1", + "mediaserial2", + "mediaserial3", + "mediastamp", + "pcbserial", + "romchipserial1", + "romchipserial2", + "savechipserial", + ]; + + /// + /// Known keys for SharedFeat + /// + public static readonly string[] SharedFeatKeys = + [ + "name", + "value", + ]; + + /// + /// Known keys for Slot + /// + public static readonly string[] SlotKeys = + [ + "name", + ]; + + /// + /// Known keys for SlotOption + /// + public static readonly string[] SlotOptionKeys = + [ + "default", + "devname", + "name", + ]; + + /// + /// Known keys for SoftwareList + /// + public static readonly string[] SoftwareListKeys = + [ + "filter", + "name", + "status", + "tag", + ]; + + /// + /// Known keys for Sound + /// + public static readonly string[] SoundKeys = + [ + "channels", + ]; + + /// + /// Known keys for SourceDetails + /// + public static readonly string[] SourceDetailsKeys = + [ + "appendtonumber", + "comment1", + "comment2", + "dumpdate", + "dumpdateinfo", + "dumper", + "id", + "link1", + "link1public", + "link2", + "link2public", + "link3", + "link3public", + "mediatitle", + "nodump", + "origin", + "originalformat", + "project", + "region", + "releasedate", + "releasedateinfo", + "rominfo", + "section", + "tool", + ]; + + /// + /// Known keys for Video + /// + public static readonly string[] VideoKeys = + [ + "aspectx", + "aspecty", + "displaytype", + "freq", + "height", + "orientation", + "refresh", + "rotate", + "screen", + "width", + "x", + "y", + ]; + + #endregion + } +} diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 6b5f3c00..cef46638 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -1,5 +1,6 @@ using System; using SabreTools.Data.Models.Metadata; +using static SabreTools.Metadata.Filter.Constants; namespace SabreTools.Metadata.Filter { @@ -33,795 +34,6 @@ namespace SabreTools.Metadata.Filter private static readonly string[] _datItemTypeNames = Enum.GetNames(typeof(ItemType)); #endif - #region Per-Type Accepted Keys - - /// - /// Known keys for Adjuster - /// - private static readonly string[] _adjusterKeys = - [ - "condition.mask", - "condition.relation", - "condition.tag", - "condition.value", - "default", - "name" - ]; - - /// - /// Known keys for Archive - /// - private static readonly string[] _archiveKeys = - [ - "additional", - "adult", - "alt", - "bios", - "categories", - "clone", - "clonetag", - "complete", - "dat", - "datternote", - "description", - "devstatus", - "gameid1", - "gameid2", - "langchecked", - "languages", - "licensed", - "listed", - "mergeof", - "mergename", - "name", - "namealt", - "number", - "physical", - "pirate", - "private", - "region", - "regparent", - "showlang", - "special1", - "special2", - "stickynote", - "version1", - "version2", - ]; - - /// - /// Known keys for BiosSet - /// - private static readonly string[] _biossetKeys = - [ - "default", - "description", - "name", - ]; - - /// - /// Known keys for Chip - /// - private static readonly string[] _chipKeys = - [ - "chiptype", - "clock", - "flags", - "name", - "soundonly", - "tag", - ]; - - /// - /// Known keys for Configuration - /// - private static readonly string[] _configurationKeys = - [ - "condition.mask", - "condition.relation", - "condition.tag", - "condition.value", - "mask", - "name", - "tag", - ]; - - /// - /// Known keys for ConfLocation - /// - private static readonly string[] _confLocationKeys = - [ - "inverted", - "name", - "number", - ]; - - /// - /// Known keys for ConfSetting - /// - private static readonly string[] _confSettingKeys = - [ - "condition.mask", - "condition.relation", - "condition.tag", - "condition.value", - "default", - "name", - "value", - ]; - - /// - /// Known keys for Control - /// - private static readonly string[] _controlKeys = - [ - "buttons", - "controltype", - "keydelta", - "maximum", - "minimum", - "player", - "reqbuttons", - "reverse", - "sensitivity", - "ways", - "ways2", - "ways3", - ]; - - /// - /// Known keys for DataArea - /// - private static readonly string[] _dataAreaKeys = - [ - "endianness", - "name", - "size", - "width", - ]; - - /// - /// Known keys for Device - /// - private static readonly string[] _deviceKeys = - [ - "devicetype", - "extension.name", - "fixedimage", - "instance.briefname", - "instance.name", - "interface", - "mandatory", - "tag", - ]; - - /// - /// Known keys for DeviceRef - /// - private static readonly string[] _deviceRefKeys = - [ - "name", - ]; - - /// - /// Known keys for DipLocation - /// - private static readonly string[] _dipLocationKeys = - [ - "inverted", - "name", - "number", - ]; - - /// - /// Known keys for DipSwitch - /// - private static readonly string[] _dipSwitchKeys = - [ - "condition.mask", - "condition.relation", - "condition.tag", - "condition.value", - "default", - "mask", - "name", - "tag", - ]; - - /// - /// Known keys for DipSwitch - /// - private static readonly string[] _dipValueKeys = - [ - "condition.mask", - "condition.relation", - "condition.tag", - "condition.value", - "default", - "name", - "value", - ]; - - /// - /// Known keys for Disk - /// - private static readonly string[] _diskKeys = - [ - "flags", - "index", - "md5", - "merge", - "name", - "optional", - "region", - "sha1", - "status", - "writable", - ]; - - /// - /// Known keys for DiskArea - /// - private static readonly string[] _diskAreaKeys = - [ - "name", - ]; - - /// - /// Known keys for Display - /// - private static readonly string[] _displayKeys = - [ - "aspectx", - "aspecty", - "displaytype", - "flipx", - "freq", - "hbend", - "hbstart", - "height", - "htotal", - "orientation", - "pixclock", - "refresh", - "rotate", - "screen", - "tag", - "vbend", - "vbstart", - "vtotal", - "width", - "x", - "y", - ]; - - /// - /// Known keys for Driver - /// - private static readonly string[] _driverKeys = - [ - "blit", - "cocktail", - "color", - "emulation", - "incomplete", - "nosoundhardware", - "palettesize", - "requiresartwork", - "savestate", - "sound", - "status", - "unofficial", - ]; - - /// - /// Known keys for Feature/PartFeature - /// - private static readonly string[] _featureKeys = - [ - "featuretype", - "name", - "overall", - "status", - "value", - ]; - - /// - /// Known keys for Header - /// - private static readonly string[] _headerKeys = - [ - "author", - "biosmode", - "build", - "category", - "comment", - "date", - "datversion", - "debug", - "description", - "email", - "emulatorversion", - "filename", - "forcemerging", - "forcenodump", - "forcepacking", - "forcezipping", - "header", - "headerskipper", - "homepage", - "id", - "imfolder", - "lockbiosmode", - "lockrommode", - "locksamplemode", - "mameconfig", - "name", - "notes", - "plugin", - "refname", - "rommode", - "romtitle", - "rootdir", - "samplemode", - "schemalocation", - "screenshotsheight", - "screenshotswidth", - "skipper", - "system", - "timestamp", - "type", - "url", - "version", - ]; - - /// - /// Known keys for Info - /// - private static readonly string[] _infoKeys = - [ - "name", - "value", - ]; - - /// - /// Known keys for Input - /// - private static readonly string[] _inputKeys = - [ - "buttons", - "coins", - "control", - "controlattr", - "players", - "service", - "tilt", - ]; - - /// - /// Known keys for Machine - /// - private static readonly string[] _machineKeys = - [ - "board", - "buttons", - "category", - "cloneof", - "comment", - "company", - "control", - "crc", - "country", - "description", - "developer", - "dirname", - "displaycount", - "displaytype", - "duplicateid", - "emulator", - "enabled", - "extra", - "favorite", - "genmsxid", - "genre", - "hash", - "history", - "id", - "im1crc", - "im2crc", - "imagenumber", - "isbios", - "isdevice", - "ismechanical", - "language", - "location", - "manufacturer", - "name", - "notes", - "playedcount", - "playedtime", - "players", - "publisher", - "ratings", - "rebuildto", - "relatedto", - "releasenumber", - "romof", - "rotation", - "runnable", - "sampleof", - "savetype", - "score", - "source", - "sourcefile", - "sourcerom", - "status", - "subgenre", - "supported", - "system", - "tags", - "titleid", - "type", - "url", - "year", - ]; - - /// - /// Known keys for Media - /// - private static readonly string[] _mediaKeys = - [ - "md5", - "name", - "sha1", - "sha256", - "spamsum", - ]; - - /// - /// Known keys for Original - /// - private static readonly string[] _originalKeys = - [ - "content", - "value", - ]; - - /// - /// Known keys for Part - /// - private static readonly string[] _partKeys = - [ - "interface", - "name", - ]; - - /// - /// Known keys for Port - /// - private static readonly string[] _portKeys = - [ - "analog.mask", - "tag", - ]; - - /// - /// Known keys for RamOption - /// - private static readonly string[] _ramOptionKeys = - [ - "content", - "default", - "name", - ]; - - /// - /// Known keys for Release - /// - private static readonly string[] _releaseKeys = - [ - "date", - "default", - "language", - "name", - "region", - ]; - - /// - /// Known keys for ReleaseDetails - /// - private static readonly string[] _releaseDetailsKeys = - [ - "appendtonumber", - "archivename", - "category", - "comment", - "date", - "dirname", - "group", - "id", - "nfocrc", - "nfoname", - "nfosize", - "origin", - "originalformat", - "region", - "rominfo", - "tool", - ]; - - /// - /// Known keys for Rom - /// - private static readonly string[] _romKeys = - [ - "album", - "alt_romname", - "alt_title", - "altromname", - "alttitle", - "artist", - "asr_detected_lang", - "asr_detected_lang_conf", - "asr_transcribed_lang", - "asrdetectedlang", - "asrdetectedlangconf", - "asrtranscribedlang", - "bios", - "bitrate", - "bittorrentmagnethash", - "btih", - "cloth_cover_detection_module_version", - "clothcoverdetectionmoduleversion", - "collection-catalog-number", - "collectioncatalognumber", - "comment", - "crc", - "crc16", - "crc32", - "crc64", - "creator", - "date", - "dispose", - "extension", - "filecount", - "fileisavailable", - "flags", - "format", - "header", - "height", - "hocr_char_to_word_hocr_version", - "hocr_char_to_word_module_version", - "hocr_fts_text_hocr_version", - "hocr_fts_text_module_version", - "hocr_pageindex_hocr_version", - "hocr_pageindex_module_version", - "hocrchartowordhocrversion", - "hocrchartowordmoduleversion", - "hocrftstexthocrversion", - "hocrftstextmoduleversion", - "hocrpageindexhocrversion", - "hocrpageindexmoduleversion", - "inverted", - "lastmodifiedtime", - "length", - "loadflag", - "matrix_number", - "matrixnumber", - "md2", - "md4", - "md5", - "mediatype", - "merge", - "mia", - "mtime", - "name", - "ocr", - "ocr_converted", - "ocr_detected_lang", - "ocr_detected_lang_conf", - "ocr_detected_script", - "ocr_detected_script_conf", - "ocr_module_version", - "ocr_parameters", - "offset", - "openmsxmediatype", - "openmsxtype", - "optional", - "original", - "pdf_module_version", - "pdfmoduleversion", - "preview-image", - "previewimage", - "publisher", - "region", - "remark", - "ripemd128", - "ripemd160", - "rotation", - "serial", - "sha1", - "sha256", - "sha384", - "sha512", - "size", - "soundonly", - "source", - "spamsum", - "start", - "status", - "summation", - "tesseractocr", - "tesseractocrconverted", - "tesseractocrdetectedlang", - "tesseractocrdetectedlangconf", - "tesseractocrdetectedscript", - "tesseractocrdetectedscriptconf", - "tesseractocrmoduleversion", - "tesseractocrparameters", - "title", - "track", - "value", - "whisper_asr_module_version", - "whisper_model_hash", - "whisper_model_name", - "whisper_version", - "whisperasrmoduleversion", - "whispermodelhash", - "whispermodelname", - "whisperversion", - "width", - "word_conf_0_10", - "word_conf_11_20", - "word_conf_21_30", - "word_conf_31_40", - "word_conf_41_50", - "word_conf_51_60", - "word_conf_61_70", - "word_conf_71_80", - "word_conf_81_90", - "word_conf_91_100", - "wordconfidenceinterval0to10", - "wordconfidenceinterval11to20", - "wordconfidenceinterval21to30", - "wordconfidenceinterval31to40", - "wordconfidenceinterval41to50", - "wordconfidenceinterval51to60", - "wordconfidenceinterval61to70", - "wordconfidenceinterval71to80", - "wordconfidenceinterval81to90", - "wordconfidenceinterval91to100", - "xxhash3128", - "xxhash364", - ]; - - /// - /// Known keys for Sample - /// - private static readonly string[] _sampleKeys = - [ - "name", - ]; - - /// - /// Known keys for Serials - /// - private static readonly string[] _serialsKeys = - [ - "boxbarcode", - "boxserial", - "chipserial", - "digitalserial1", - "digitalserial2", - "lockoutserial", - "mediaserial1", - "mediaserial2", - "mediaserial3", - "mediastamp", - "pcbserial", - "romchipserial1", - "romchipserial2", - "savechipserial", - ]; - - /// - /// Known keys for SharedFeat - /// - private static readonly string[] _sharedFeatKeys = - [ - "name", - "value", - ]; - - /// - /// Known keys for Slot - /// - private static readonly string[] _slotKeys = - [ - "name", - ]; - - /// - /// Known keys for SlotOption - /// - private static readonly string[] _slotOptionKeys = - [ - "default", - "devname", - "name", - ]; - - /// - /// Known keys for SoftwareList - /// - private static readonly string[] _softwareListKeys = - [ - "filter", - "name", - "status", - "tag", - ]; - - /// - /// Known keys for Sound - /// - private static readonly string[] _soundKeys = - [ - "channels", - ]; - - /// - /// Known keys for SourceDetails - /// - private static readonly string[] _sourceDetailsKeys = - [ - "appendtonumber", - "comment1", - "comment2", - "dumpdate", - "dumpdateinfo", - "dumper", - "id", - "link1", - "link1public", - "link2", - "link2public", - "link3", - "link3public", - "mediatitle", - "nodump", - "origin", - "originalformat", - "project", - "region", - "releasedate", - "releasedateinfo", - "rominfo", - "section", - "tool", - ]; - - /// - /// Known keys for Video - /// - private static readonly string[] _videoKeys = - [ - "aspectx", - "aspecty", - "displaytype", - "freq", - "height", - "orientation", - "refresh", - "rotate", - "screen", - "width", - "x", - "y", - ]; - - #endregion - #endregion /// @@ -909,7 +121,7 @@ namespace SabreTools.Metadata.Filter { // Get if there's a match to a property string localFieldName = fieldName; - string? propertyMatch = Array.Find(_headerKeys, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + string? propertyMatch = Array.Find(HeaderKeys, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); if (propertyMatch is null) return false; @@ -926,7 +138,7 @@ namespace SabreTools.Metadata.Filter { // Get if there's a match to a property string localFieldName = fieldName; - string? propertyMatch = Array.Find(_machineKeys, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); + string? propertyMatch = Array.Find(MachineKeys, c => string.Equals(c, localFieldName, StringComparison.OrdinalIgnoreCase)); if (propertyMatch is null) return false; @@ -998,46 +210,46 @@ namespace SabreTools.Metadata.Filter // Get the set of properties string[]? properties = itemName.ToLowerInvariant() switch { - "adjuster" => _adjusterKeys, - "archive" => _archiveKeys, - "biosset" => _biossetKeys, - "chip" => _chipKeys, - "configuration" => _configurationKeys, - "conflocation" => _confLocationKeys, - "confsetting" => _confSettingKeys, - "control" => _controlKeys, - "dataarea" => _dataAreaKeys, - "device" => _deviceKeys, - "deviceref" => _deviceRefKeys, - "diplocation" => _dipLocationKeys, - "dipswitch" => _dipSwitchKeys, - "dipvalue" => _dipValueKeys, - "disk" => _diskKeys, - "diskarea" => _diskAreaKeys, - "display" => _displayKeys, - "driver" => _driverKeys, - "feature" or "partfeature" => _featureKeys, - "game" or "machine" or "resource" or "set" => _machineKeys, - "header" => _headerKeys, - "info" => _infoKeys, - "input" => _inputKeys, - "media" => _mediaKeys, - "original" => _originalKeys, - "part" => _partKeys, - "port" => _portKeys, - "ramoption" => _ramOptionKeys, - "release" => _releaseKeys, - "releasedetails" => _releaseDetailsKeys, - "rom" => _romKeys, - "sample" => _sampleKeys, - "serials" => _serialsKeys, - "sharedfeat" => _sharedFeatKeys, - "slot" => _slotKeys, - "slotoption" => _slotOptionKeys, - "softwarelist" => _softwareListKeys, - "sound" => _soundKeys, - "sourcedetails" => _sourceDetailsKeys, - "video" => _videoKeys, + "adjuster" => AdjusterKeys, + "archive" => ArchiveKeys, + "biosset" => BiossetKeys, + "chip" => ChipKeys, + "configuration" => ConfigurationKeys, + "conflocation" => ConfLocationKeys, + "confsetting" => ConfSettingKeys, + "control" => ControlKeys, + "dataarea" => DataAreaKeys, + "device" => DeviceKeys, + "deviceref" => DeviceRefKeys, + "diplocation" => DipLocationKeys, + "dipswitch" => DipSwitchKeys, + "dipvalue" => DipValueKeys, + "disk" => DiskKeys, + "diskarea" => DiskAreaKeys, + "display" => DisplayKeys, + "driver" => DriverKeys, + "feature" or "partfeature" => FeatureKeys, + "game" or "machine" or "resource" or "set" => MachineKeys, + "header" => HeaderKeys, + "info" => InfoKeys, + "input" => InputKeys, + "media" => MediaKeys, + "original" => OriginalKeys, + "part" => PartKeys, + "port" => PortKeys, + "ramoption" => RamOptionKeys, + "release" => ReleaseKeys, + "releasedetails" => ReleaseDetailsKeys, + "rom" => RomKeys, + "sample" => SampleKeys, + "serials" => SerialsKeys, + "sharedfeat" => SharedFeatKeys, + "slot" => SlotKeys, + "slotoption" => SlotOptionKeys, + "softwarelist" => SoftwareListKeys, + "sound" => SoundKeys, + "sourcedetails" => SourceDetailsKeys, + "video" => VideoKeys, _ => null, }; if (properties is null)