Filter Abstraction (#25)

* Add category, back filters by dictionary

* Complete internal filter set

* Fix AreaSize filter

* Populate filter object the hard way

* Manipulation flags should not be filters

* None of them need to be public

* Convert to partial helper method

* Better method use

* Field, not string; no dictionary

* Add FilterTo method for later

* More naming options (easier conversion)

* Update README
This commit is contained in:
Matt Nadareski
2020-07-18 21:35:17 -07:00
committed by GitHub
parent a25ffc8a36
commit 334e1c4585
21 changed files with 1551 additions and 254 deletions

View File

@@ -241,6 +241,9 @@ namespace SabreTools.Library.DatFiles
case "manufacturer":
machine.Manufacturer = itemVal;
break;
case "category":
machine.Category = itemVal;
break;
case "cloneof":
machine.CloneOf = itemVal;
break;
@@ -634,6 +637,8 @@ namespace SabreTools.Library.DatFiles
cmpw.WriteStandalone("year", datItem.Year);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Manufacturer, DatHeader.ExcludeFields)))
cmpw.WriteStandalone("manufacturer", datItem.Manufacturer);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
cmpw.WriteStandalone("category", datItem.Category);
cmpw.Flush();
}

View File

@@ -1147,6 +1147,9 @@ namespace SabreTools.Library.DatFiles
if (updateFields.Contains(Field.Publisher))
newDatItem.Publisher = firstDupe.Publisher;
if (updateFields.Contains(Field.Category))
newDatItem.Category = firstDupe.Category;
if (updateFields.Contains(Field.RomOf))
newDatItem.RomOf = firstDupe.RomOf;
@@ -3659,6 +3662,7 @@ namespace SabreTools.Library.DatFiles
name = item.Name,
manufacturer = item.Manufacturer,
publisher = item.Publisher,
category = item.Category,
crc = string.Empty,
md5 = string.Empty,
ripemd160 = string.Empty,
@@ -3709,6 +3713,7 @@ namespace SabreTools.Library.DatFiles
.Replace("%name%", name)
.Replace("%manufacturer%", manufacturer)
.Replace("%publisher%", publisher)
.Replace("%category%", category)
.Replace("%crc%", crc)
.Replace("%md5%", md5)
.Replace("%ripemd160%", ripemd160)

File diff suppressed because it is too large Load Diff

View File

@@ -317,6 +317,10 @@ namespace SabreTools.Library.DatFiles
machine.Publisher = jtr.ReadAsString();
break;
case "category":
machine.Category = jtr.ReadAsString();
break;
case "romof":
machine.RomOf = jtr.ReadAsString();
break;
@@ -1023,6 +1027,11 @@ namespace SabreTools.Library.DatFiles
jtw.WritePropertyName("publisher");
jtw.WriteValue(datItem.Publisher);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
{
jtw.WritePropertyName("category");
jtw.WriteValue(datItem.Category);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RomOf, DatHeader.ExcludeFields)) && !string.Equals(datItem.MachineName, datItem.RomOf, StringComparison.OrdinalIgnoreCase))
{
jtw.WritePropertyName("romof");

View File

@@ -716,6 +716,8 @@ namespace SabreTools.Library.DatFiles
xtw.WriteElementString("year", datItem.Year);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, DatHeader.ExcludeFields)))
xtw.WriteElementString("publisher", datItem.Publisher);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
xtw.WriteElementString("category", datItem.Category);
if (!DatHeader.ExcludeFields[(int)Field.Infos] && datItem.Infos != null && datItem.Infos.Count > 0)
{

View File

@@ -377,6 +377,10 @@ namespace SabreTools.Library.DatFiles
machine.Publisher = reader.ReadElementContentAsString();
break;
case "category": // Not technically supported but used by some legacy DATs
machine.Category = reader.ReadElementContentAsString();
break;
case "trurip": // This is special metadata unique to TruRip
ReadTruRip(reader.ReadSubtree(), machine);
@@ -588,7 +592,7 @@ namespace SabreTools.Library.DatFiles
break;
case "genre":
reader.ReadElementContentAsString();
machine.Category = reader.ReadElementContentAsString();
break;
case "subgenre":
@@ -894,6 +898,8 @@ namespace SabreTools.Library.DatFiles
xtw.WriteElementString("publisher", datItem.Publisher);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Manufacturer, DatHeader.ExcludeFields)))
xtw.WriteElementString("manufacturer", datItem.Manufacturer);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
xtw.WriteElementString("category", datItem.Category);
xtw.Flush();
}

View File

@@ -213,6 +213,10 @@ namespace SabreTools.Library.DatFiles
machine.Publisher = value;
break;
case "Machine.Category":
machine.Category = value;
break;
case "Machine.RomOf":
machine.RomOf = value;
break;

View File

@@ -174,6 +174,10 @@ namespace SabreTools.Library.DatFiles
machine.Publisher = reader.ReadElementContentAsString();
break;
case "category":
machine.Category = reader.ReadElementContentAsString();
break;
case "info":
machine.Infos.Add(new KeyValuePair<string, string>(reader.GetAttribute("name"), reader.GetAttribute("value")));
reader.Read();
@@ -717,6 +721,8 @@ namespace SabreTools.Library.DatFiles
xtw.WriteElementString("year", datItem.Year);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, DatHeader.ExcludeFields)))
xtw.WriteElementString("publisher", datItem.Publisher);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, DatHeader.ExcludeFields)))
xtw.WriteElementString("category", datItem.Category);
if (!DatHeader.ExcludeFields[(int)Field.Infos] && datItem.Infos != null && datItem.Infos.Count > 0)
{