diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs
index 9f9dc14c..9321a27c 100644
--- a/SabreTools.Library/DatFiles/DatFile.cs
+++ b/SabreTools.Library/DatFiles/DatFile.cs
@@ -5894,6 +5894,77 @@ namespace SabreTools.Library.DatFiles
return outfile;
}
+ ///
+ /// 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 CreatePrefixPostfix(DatItem item, bool prefix)
+ {
+ // Initialize strings
+ string fix = "",
+ game = item.MachineName,
+ name = item.Name,
+ manufacturer = item.Manufacturer,
+ publisher = item.Publisher,
+ crc = string.Empty,
+ md5 = string.Empty,
+ sha1 = string.Empty,
+ sha256 = string.Empty,
+ sha384 = string.Empty,
+ sha512 = string.Empty,
+ size = string.Empty;
+
+ // If we have a prefix
+ if (prefix)
+ {
+ fix = Prefix + (Quotes ? "\"" : "");
+ }
+ // If we have a postfix
+ else
+ {
+ fix = (Quotes ? "\"" : "") + Postfix;
+ }
+
+ // Ensure we have the proper values for replacement
+ if (item.Type == ItemType.Rom)
+ {
+ crc = ((Rom)item).CRC;
+ md5 = ((Rom)item).MD5;
+ sha1 = ((Rom)item).SHA1;
+ sha256 = ((Rom)item).SHA256;
+ sha384 = ((Rom)item).SHA384;
+ sha512 = ((Rom)item).SHA512;
+ size = ((Rom)item).Size.ToString();
+ }
+ else if (item.Type == ItemType.Disk)
+ {
+ md5 = ((Disk)item).MD5;
+ sha1 = ((Disk)item).SHA1;
+ sha256 = ((Disk)item).SHA256;
+ sha384 = ((Disk)item).SHA384;
+ sha512 = ((Disk)item).SHA512;
+ }
+
+ // Now do bulk replacement where possible
+ fix = fix
+ .Replace("%game%", game)
+ .Replace("%machine%", game)
+ .Replace("%name%", name)
+ .Replace("%manufacturer%", manufacturer)
+ .Replace("%publisher%", publisher)
+ .Replace("%crc%", crc)
+ .Replace("%md5%", md5)
+ .Replace("%sha1%", sha1)
+ .Replace("%sha256%", sha256)
+ .Replace("%sha384%", sha384)
+ .Replace("%sha512%", sha512)
+ .Replace("%size%", size);
+
+ return fix;
+ }
+
#endregion
#endregion // Instance Methods
diff --git a/SabreTools.Library/DatFiles/Missfile.cs b/SabreTools.Library/DatFiles/Missfile.cs
index 3f175803..c9820536 100644
--- a/SabreTools.Library/DatFiles/Missfile.cs
+++ b/SabreTools.Library/DatFiles/Missfile.cs
@@ -155,81 +155,8 @@ namespace SabreTools.Library.DatFiles
try
{
string state = "", name = "", pre = "", post = "";
- pre = Prefix + (Quotes ? "\"" : "");
- post = (Quotes ? "\"" : "") + Postfix;
-
- if (rom.Type == ItemType.Rom)
- {
- // Check for special strings in prefix and postfix
- pre = pre
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", ((Rom)rom).CRC)
- .Replace("%md5%", ((Rom)rom).MD5)
- .Replace("%sha1%", ((Rom)rom).SHA1)
- .Replace("%sha256%", ((Rom)rom).SHA256)
- .Replace("%sha384%", ((Rom)rom).SHA384)
- .Replace("%sha512%", ((Rom)rom).SHA512)
- .Replace("%size%", ((Rom)rom).Size.ToString());
- post = post
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", ((Rom)rom).CRC)
- .Replace("%md5%", ((Rom)rom).MD5)
- .Replace("%sha1%", ((Rom)rom).SHA1)
- .Replace("%sha256%", ((Rom)rom).SHA256)
- .Replace("%sha384%", ((Rom)rom).SHA384)
- .Replace("%sha512%", ((Rom)rom).SHA512)
- .Replace("%size%", ((Rom)rom).Size.ToString());
- }
- else if (rom.Type == ItemType.Disk)
- {
- // Check for special strings in prefix and postfix
- pre = pre
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", string.Empty)
- .Replace("%md5%", ((Disk)rom).MD5)
- .Replace("%sha1%", ((Disk)rom).SHA1)
- .Replace("%sha256%", ((Disk)rom).SHA256)
- .Replace("%sha384%", ((Disk)rom).SHA384)
- .Replace("%sha512%", ((Disk)rom).SHA512)
- .Replace("%size%", string.Empty);
- post = post
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", string.Empty)
- .Replace("%md5%", ((Disk)rom).MD5)
- .Replace("%sha1%", ((Disk)rom).SHA1)
- .Replace("%sha256%", ((Disk)rom).SHA256)
- .Replace("%sha384%", ((Disk)rom).SHA384)
- .Replace("%sha512%", ((Disk)rom).SHA512)
- .Replace("%size%", string.Empty);
- }
- else
- {
- // Check for special strings in prefix and postfix
- pre = pre
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", string.Empty)
- .Replace("%md5%", string.Empty)
- .Replace("%sha1%", string.Empty)
- .Replace("%sha256%", string.Empty)
- .Replace("%sha384%", string.Empty)
- .Replace("%sha512%", string.Empty)
- .Replace("%size%", string.Empty);
- post = post
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", string.Empty)
- .Replace("%md5%", string.Empty)
- .Replace("%sha1%", string.Empty)
- .Replace("%sha256%", string.Empty)
- .Replace("%sha384%", string.Empty)
- .Replace("%sha512%", string.Empty)
- .Replace("%size%", string.Empty);
- }
+ pre = CreatePrefixPostfix(rom, true);
+ post = CreatePrefixPostfix(rom, false);
// If we're in Romba mode, the state is consistent
if (Romba)
diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs
index bf3030b9..76e050df 100644
--- a/SabreTools.Library/DatFiles/SeparatedValue.cs
+++ b/SabreTools.Library/DatFiles/SeparatedValue.cs
@@ -458,75 +458,8 @@ namespace SabreTools.Library.DatFiles
return true;
}
- pre = Prefix + (Quotes ? "\"" : "");
- post = (Quotes ? "\"" : "") + Postfix;
-
- if (rom.Type == ItemType.Rom)
- {
- // Check for special strings in prefix and postfix
- pre = pre
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", ((Rom)rom).CRC)
- .Replace("%md5%", ((Rom)rom).MD5)
- .Replace("%sha1%", ((Rom)rom).SHA1)
- .Replace("%sha256%", ((Rom)rom).SHA256)
- .Replace("%sha384%", ((Rom)rom).SHA384)
- .Replace("%sha512%", ((Rom)rom).SHA512)
- .Replace("%size%", ((Rom)rom).Size.ToString());
- post = post
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", ((Rom)rom).CRC)
- .Replace("%md5%", ((Rom)rom).MD5)
- .Replace("%sha1%", ((Rom)rom).SHA1)
- .Replace("%sha256%", ((Rom)rom).SHA256)
- .Replace("%sha384%", ((Rom)rom).SHA384)
- .Replace("%sha512%", ((Rom)rom).SHA512)
- .Replace("%size%", ((Rom)rom).Size.ToString());
- }
- else if (rom.Type == ItemType.Disk)
- {
- // Check for special strings in prefix and postfix
- pre = pre
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", string.Empty)
- .Replace("%md5%", ((Disk)rom).MD5)
- .Replace("%sha1%", ((Disk)rom).SHA1)
- .Replace("%sha256%", ((Disk)rom).SHA256)
- .Replace("%sha384%", ((Disk)rom).SHA384)
- .Replace("%sha512%", ((Disk)rom).SHA512)
- .Replace("%size%", string.Empty); ;
- post = post
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", string.Empty)
- .Replace("%md5%", ((Disk)rom).MD5)
- .Replace("%sha1%", ((Disk)rom).SHA1)
- .Replace("%sha256%", ((Disk)rom).SHA256)
- .Replace("%sha384%", ((Disk)rom).SHA384)
- .Replace("%sha512%", ((Disk)rom).SHA512)
- .Replace("%size%", string.Empty); ;
- }
- else
- {
- // Check for special strings in prefix and postfix
- pre = pre
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", string.Empty)
- .Replace("%md5%", string.Empty)
- .Replace("%sha1%", string.Empty)
- .Replace("%size%", string.Empty);
- post = post
- .Replace("%game%", rom.MachineName)
- .Replace("%name%", rom.Name)
- .Replace("%crc%", string.Empty)
- .Replace("%md5%", string.Empty)
- .Replace("%sha1%", string.Empty)
- .Replace("%size%", string.Empty);
- }
+ pre = CreatePrefixPostfix(rom, true);
+ post = CreatePrefixPostfix(rom, false);
if (rom.Type == ItemType.Rom)
{