[DatFile, Style] Fix CMP parsing again

This commit is contained in:
Matt Nadareski
2016-11-04 10:02:25 -07:00
parent eac3c6d390
commit fb83b02437
2 changed files with 16 additions and 4 deletions

View File

@@ -876,6 +876,7 @@ namespace SabreTools.Helper.Dats
DateTime start = DateTime.Now; DateTime start = DateTime.Now;
logger.User("Processing individual DATs"); logger.User("Processing individual DATs");
/// BEGIN
Parallel.For(0, Parallel.For(0,
inputs.Count, inputs.Count,
new ParallelOptions { MaxDegreeOfParallelism = maxDegreeOfParallelism }, new ParallelOptions { MaxDegreeOfParallelism = maxDegreeOfParallelism },
@@ -914,6 +915,7 @@ namespace SabreTools.Helper.Dats
} }
datHeaders[i].Files = null; datHeaders[i].Files = null;
} }
/// END
logger.User("Processing and populating complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff")); logger.User("Processing and populating complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff"));
@@ -1692,12 +1694,14 @@ namespace SabreTools.Helper.Dats
// Regular attributes // Regular attributes
case "name": case "name":
i++; i++;
quoteless = gc[i].Replace("\"", "");
item.Name = quoteless; item.Name = quoteless;
break; break;
case "size": case "size":
if (item.Type == ItemType.Rom) if (item.Type == ItemType.Rom)
{ {
i++; i++;
quoteless = gc[i].Replace("\"", "");
long size = -1; long size = -1;
if (Int64.TryParse(quoteless, out size)) if (Int64.TryParse(quoteless, out size))
{ {
@@ -1710,6 +1714,7 @@ namespace SabreTools.Helper.Dats
if (item.Type == ItemType.Rom) if (item.Type == ItemType.Rom)
{ {
i++; i++;
quoteless = gc[i].Replace("\"", "");
((Rom)item).CRC = quoteless.ToLowerInvariant(); ((Rom)item).CRC = quoteless.ToLowerInvariant();
} }
break; break;
@@ -1717,11 +1722,13 @@ namespace SabreTools.Helper.Dats
if (item.Type == ItemType.Rom) if (item.Type == ItemType.Rom)
{ {
i++; i++;
quoteless = gc[i].Replace("\"", "");
((Rom)item).MD5 = quoteless.ToLowerInvariant(); ((Rom)item).MD5 = quoteless.ToLowerInvariant();
} }
else if (item.Type == ItemType.Disk) else if (item.Type == ItemType.Disk)
{ {
i++; i++;
quoteless = gc[i].Replace("\"", "");
((Disk)item).MD5 = quoteless.ToLowerInvariant(); ((Disk)item).MD5 = quoteless.ToLowerInvariant();
} }
break; break;
@@ -1729,18 +1736,21 @@ namespace SabreTools.Helper.Dats
if (item.Type == ItemType.Rom) if (item.Type == ItemType.Rom)
{ {
i++; i++;
quoteless = gc[i].Replace("\"", "");
((Rom)item).SHA1 = quoteless.ToLowerInvariant(); ((Rom)item).SHA1 = quoteless.ToLowerInvariant();
} }
else if (item.Type == ItemType.Disk) else if (item.Type == ItemType.Disk)
{ {
i++; i++;
quoteless = gc[i].Replace("\"", "");
((Disk)item).SHA1 = quoteless.ToLowerInvariant(); ((Disk)item).SHA1 = quoteless.ToLowerInvariant();
} }
break; break;
case "status": case "status":
case "flags": case "flags":
i++; i++;
if (gc[i].ToLowerInvariant() == "good") quoteless = gc[i].Replace("\"", "");
if (quoteless.ToLowerInvariant() == "good")
{ {
if (item.Type == ItemType.Rom) if (item.Type == ItemType.Rom)
{ {
@@ -1751,7 +1761,7 @@ namespace SabreTools.Helper.Dats
((Disk)item).ItemStatus = ItemStatus.Good; ((Disk)item).ItemStatus = ItemStatus.Good;
} }
} }
else if (gc[i].ToLowerInvariant() == "baddump") else if (quoteless.ToLowerInvariant() == "baddump")
{ {
if (item.Type == ItemType.Rom) if (item.Type == ItemType.Rom)
{ {
@@ -1762,7 +1772,7 @@ namespace SabreTools.Helper.Dats
((Disk)item).ItemStatus = ItemStatus.BadDump; ((Disk)item).ItemStatus = ItemStatus.BadDump;
} }
} }
else if (gc[i].ToLowerInvariant() == "nodump") else if (quoteless.ToLowerInvariant() == "nodump")
{ {
if (item.Type == ItemType.Rom) if (item.Type == ItemType.Rom)
{ {
@@ -1773,7 +1783,7 @@ namespace SabreTools.Helper.Dats
((Disk)item).ItemStatus = ItemStatus.Nodump; ((Disk)item).ItemStatus = ItemStatus.Nodump;
} }
} }
else if (gc[i].ToLowerInvariant() == "verified") else if (quoteless.ToLowerInvariant() == "verified")
{ {
if (item.Type == ItemType.Rom) if (item.Type == ItemType.Rom)
{ {
@@ -1789,6 +1799,7 @@ namespace SabreTools.Helper.Dats
if (item.Type == ItemType.Rom) if (item.Type == ItemType.Rom)
{ {
i++; i++;
quoteless = gc[i].Replace("\"", "");
((Rom)item).Date = quoteless + " " + gc[i + 1].Replace("\"", ""); ((Rom)item).Date = quoteless + " " + gc[i + 1].Replace("\"", "");
} }
i++; i++;

View File

@@ -405,6 +405,7 @@ namespace SabreTools.Helper.Tools
public static string[] SplitLineAsCMP(string s) public static string[] SplitLineAsCMP(string s)
{ {
// Preprocess the string // Preprocess the string
s = s.Trim();
s = Regex.Replace(s, @"^\S* \(", ""); // Remove item identifier and opening brace s = Regex.Replace(s, @"^\S* \(", ""); // Remove item identifier and opening brace
s = Regex.Replace(s, @"#.*$", ""); // Remove trailing comments s = Regex.Replace(s, @"#.*$", ""); // Remove trailing comments
s = s.TrimEnd(')'); // Remove closing brace s = s.TrimEnd(')'); // Remove closing brace