From 77be3b3d84ec15604ed6e04d0716f3d92724bbc4 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 8 Feb 2017 14:02:43 -0800 Subject: [PATCH] [Filter] Add logic hooked up to _includeOfInGame Basically the logic that has been added will allow an external flag to enable the game name and not game name lists to match the cloneof and romof tags as well. This will allow more advanced set-building. --- SabreTools.Helper/Dats/Filter.cs | 48 ++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/SabreTools.Helper/Dats/Filter.cs b/SabreTools.Helper/Dats/Filter.cs index 945df656..1e86d8d8 100644 --- a/SabreTools.Helper/Dats/Filter.cs +++ b/SabreTools.Helper/Dats/Filter.cs @@ -736,28 +736,44 @@ namespace SabreTools.Helper.Dats { if (name.StartsWith("*") && name.EndsWith("*")) { - if (!item.Machine.Name.ToLowerInvariant().Contains(name.ToLowerInvariant().Replace("*", ""))) + if (_includeOfInGame + ? (!item.Machine.Name.ToLowerInvariant().Contains(name.ToLowerInvariant().Trim('*'))) + && (!item.Machine.CloneOf.ToLowerInvariant().Contains(name.ToLowerInvariant().Trim('*'))) + && (!item.Machine.RomOf.ToLowerInvariant().Contains(name.ToLowerInvariant().Trim('*'))) + : (!item.Machine.Name.ToLowerInvariant().Contains(name.ToLowerInvariant().Trim('*')))) { found = false; } } else if (name.StartsWith("*")) { - if (!item.Machine.Name.EndsWith(name.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + if (_includeOfInGame + ? (!item.Machine.Name.EndsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + && (!item.Machine.CloneOf.EndsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + && (!item.Machine.RomOf.EndsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + : (!item.Machine.Name.EndsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase))) { found = false; } } else if (name.EndsWith("*")) { - if (!item.Machine.Name.StartsWith(name.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + if (_includeOfInGame + ? (!item.Machine.Name.StartsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + && (!item.Machine.CloneOf.StartsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + && (!item.Machine.RomOf.StartsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + : (!item.Machine.Name.StartsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase))) { found = false; } } else { - if (!String.Equals(item.Machine.Name, name, StringComparison.InvariantCultureIgnoreCase)) + if (_includeOfInGame + ? (!String.Equals(item.Machine.Name, name, StringComparison.InvariantCultureIgnoreCase)) + && (!String.Equals(item.Machine.CloneOf, name, StringComparison.InvariantCultureIgnoreCase)) + && (!String.Equals(item.Machine.RomOf, name, StringComparison.InvariantCultureIgnoreCase)) + : (!String.Equals(item.Machine.Name, name, StringComparison.InvariantCultureIgnoreCase))) { found = false; } @@ -777,28 +793,44 @@ namespace SabreTools.Helper.Dats { if (name.StartsWith("*") && name.EndsWith("*")) { - if (item.Machine.Name.ToLowerInvariant().Contains(name.ToLowerInvariant().Replace("*", ""))) + if (_includeOfInGame + ? (item.Machine.Name.ToLowerInvariant().Contains(name.ToLowerInvariant().Trim('*'))) + || (item.Machine.CloneOf.ToLowerInvariant().Contains(name.ToLowerInvariant().Trim('*'))) + || (item.Machine.RomOf.ToLowerInvariant().Contains(name.ToLowerInvariant().Trim('*'))) + : (item.Machine.Name.ToLowerInvariant().Contains(name.ToLowerInvariant().Trim('*')))) { found = false; } } else if (name.StartsWith("*")) { - if (item.Machine.Name.EndsWith(name.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + if (_includeOfInGame + ? (item.Machine.Name.EndsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + || (item.Machine.CloneOf.EndsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + || (item.Machine.RomOf.EndsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + : (item.Machine.Name.EndsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase))) { found = false; } } else if (name.EndsWith("*")) { - if (item.Machine.Name.StartsWith(name.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + if (_includeOfInGame + ? (item.Machine.Name.StartsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + || (item.Machine.CloneOf.StartsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + || (item.Machine.RomOf.StartsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase)) + : (item.Machine.Name.StartsWith(name.Trim('*'), StringComparison.InvariantCultureIgnoreCase))) { found = false; } } else { - if (String.Equals(item.Machine.Name, name, StringComparison.InvariantCultureIgnoreCase)) + if (_includeOfInGame + ? (String.Equals(item.Machine.Name, name, StringComparison.InvariantCultureIgnoreCase)) + || (String.Equals(item.Machine.CloneOf, name, StringComparison.InvariantCultureIgnoreCase)) + || (String.Equals(item.Machine.RomOf, name, StringComparison.InvariantCultureIgnoreCase)) + : (String.Equals(item.Machine.Name, name, StringComparison.InvariantCultureIgnoreCase))) { found = false; }