diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs
index f1916f15..0761949f 100644
--- a/SabreTools.DatFiles/DatFile.cs
+++ b/SabreTools.DatFiles/DatFile.cs
@@ -203,24 +203,39 @@ namespace SabreTools.DatFiles
if (machine == null)
return string.Empty;
+ // Apply the prefix and postfix
+ return CreatePrefixPostfixImpl(item, machine, prefix);
+ }
+
+ ///
+ /// Create a prefix or postfix from inputs
+ ///
+ /// DatItem to create a prefix/postfix for
+ /// True for prefix, false for postfix
+ /// Sanitized string representing the postfix or prefix
+ protected string CreatePrefixPostfixDB(KeyValuePair item, bool prefix)
+ {
+ // Get machine for the item
+ var machine = ItemsDB.GetMachineForItem(item.Key);
+ if (machine.Value == null)
+ return string.Empty;
+
+ // Apply the prefix and postfix
+ return CreatePrefixPostfixImpl(item.Value, machine.Value, prefix);
+ }
+
+ ///
+ /// Create a prefix or postfix from inputs
+ ///
+ /// DatItem to create a prefix/postfix for
+ /// Machine to get information from
+ /// True for prefix, false for postfix
+ /// Sanitized string representing the postfix or prefix
+ private string CreatePrefixPostfixImpl(DatItem item, Machine machine, bool prefix)
+ {
// Initialize strings
string? type = item.GetStringFieldValue(Models.Metadata.DatItem.TypeKey);
- string fix,
- game = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty,
- manufacturer = machine.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty,
- publisher = machine.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty,
- category = machine.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty,
- name = item.GetName() ?? type.AsEnumValue().AsStringValue() ?? string.Empty,
- crc = string.Empty,
- md2 = string.Empty,
- md4 = string.Empty,
- md5 = string.Empty,
- sha1 = string.Empty,
- sha256 = string.Empty,
- sha384 = string.Empty,
- sha512 = string.Empty,
- size = string.Empty,
- spamsum = string.Empty;
+ string fix, game = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty, manufacturer = machine.Value.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty, publisher = machine.Value.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty, category = machine.Value.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty, name = item.Value.GetName() ?? type.AsEnumValue().AsStringValue() ?? string.Empty, crc = string.Empty, md2 = string.Empty, md4 = string.Empty, md5 = string.Empty, sha1 = string.Empty, sha256 = string.Empty, sha384 = string.Empty, sha512 = string.Empty, size = string.Empty, spamsum = string.Empty;
// Check for quotes
bool? quotes = Header.GetBoolFieldValue(DatHeader.QuotesKey);
@@ -288,104 +303,6 @@ namespace SabreTools.DatFiles
return fix;
}
- ///
- /// Create a prefix or postfix from inputs
- ///
- /// DatItem to create a prefix/postfix for
- /// True for prefix, false for postfix
- /// Sanitized string representing the postfix or prefix
- protected string CreatePrefixPostfixDB(KeyValuePair item, bool prefix)
- {
- // Get machine for the item
- var machine = ItemsDB.GetMachineForItem(item.Key);
- if (machine.Value == null)
- return string.Empty;
-
- // Initialize strings
- string? type = item.Value.GetStringFieldValue(Models.Metadata.DatItem.TypeKey);
- string fix,
- game = machine.Value.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty,
- manufacturer = machine.Value.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty,
- publisher = machine.Value.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty,
- category = machine.Value.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty,
- name = item.Value.GetName() ?? type.AsEnumValue().AsStringValue() ?? string.Empty,
- crc = string.Empty,
- md2 = string.Empty,
- md4 = string.Empty,
- md5 = string.Empty,
- sha1 = string.Empty,
- sha256 = string.Empty,
- sha384 = string.Empty,
- sha512 = string.Empty,
- size = string.Empty,
- spamsum = string.Empty;
-
- // Check for quotes
- bool? quotes = Header.GetBoolFieldValue(DatHeader.QuotesKey);
-
- // If we have a prefix
- if (prefix)
- {
- string? prefixString = Header.GetStringFieldValue(DatHeader.PrefixKey);
- fix = prefixString + (quotes == true ? "\"" : string.Empty);
- }
-
- // If we have a postfix
- else
- {
- string? postfixString = Header.GetStringFieldValue(DatHeader.PostfixKey);
- fix = (quotes == true ? "\"" : string.Empty) + postfixString;
- }
-
- // Ensure we have the proper values for replacement
- if (item.Value is Disk disk)
- {
- md5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key) ?? string.Empty;
- sha1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key) ?? string.Empty;
- }
- else if (item.Value is Media media)
- {
- md5 = media.GetStringFieldValue(Models.Metadata.Media.MD5Key) ?? string.Empty;
- sha1 = media.GetStringFieldValue(Models.Metadata.Media.SHA1Key) ?? string.Empty;
- sha256 = media.GetStringFieldValue(Models.Metadata.Media.SHA256Key) ?? string.Empty;
- spamsum = media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty;
- }
- else if (item.Value is Rom rom)
- {
- crc = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) ?? string.Empty;
- md2 = rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key) ?? string.Empty;
- md4 = rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key) ?? string.Empty;
- md5 = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) ?? string.Empty;
- sha1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) ?? string.Empty;
- sha256 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) ?? string.Empty;
- sha384 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key) ?? string.Empty;
- sha512 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key) ?? string.Empty;
- size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString() ?? string.Empty;
- spamsum = rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) ?? string.Empty;
- }
-
- // Now do bulk replacement where possible
- fix = fix
- .Replace("%game%", game)
- .Replace("%machine%", game)
- .Replace("%name%", name)
- .Replace("%manufacturer%", manufacturer)
- .Replace("%publisher%", publisher)
- .Replace("%category%", category)
- .Replace("%crc%", crc)
- .Replace("%md2%", md2)
- .Replace("%md4%", md4)
- .Replace("%md5%", md5)
- .Replace("%sha1%", sha1)
- .Replace("%sha256%", sha256)
- .Replace("%sha384%", sha384)
- .Replace("%sha512%", sha512)
- .Replace("%size%", size)
- .Replace("%spamsum%", spamsum);
-
- return fix;
- }
-
///
/// Process an item and correctly set the item name
///