diff --git a/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs b/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs
index 4e51966d..9006e916 100644
--- a/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs
+++ b/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs
@@ -59,6 +59,13 @@ namespace SabreTools.Helper.Dats
/// True if descriptions should be used as names, false otherwise (default)
/// True if original extension should be kept, false otherwise (default)
/// True if tags from the DAT should be used to merge the output, false otherwise (default)
+ ///
+ /// TODO: Add CSV and TSV parsing.
+ /// Can they be in the same parser? All it would technically need is the delimiter that it should be looking
+ /// for and it would be able to read them individually. Also, take into account different types of formats,
+ /// possibly by looking at the first line headings, determining what columns those correspond to, and then
+ /// keeping track of what goes to what in the map. That would allow for a VERY flexible reading of inputs.
+ ///
public void Parse(
// Standard Dat parsing
string filename,
@@ -88,7 +95,7 @@ namespace SabreTools.Helper.Dats
{
ext = ext.Substring(1);
}
- if (ext != "dat" && ext != "md5" && ext != "sfv" && ext != "sha1" && ext != "sha256" && ext != "txt" && ext != "xml")
+ if (ext != "dat" && ext != "csv" && ext != "md5" && ext != "sfv" && ext != "sha1" && ext != "sha256" && ext != "tsv" && ext != "txt" && ext != "xml")
{
return;
}
@@ -109,6 +116,9 @@ namespace SabreTools.Helper.Dats
case DatFormat.DOSCenter:
ParseCMP(filename, sysid, srcid, filter, trim, single, root, logger, keep, clean, descAsName);
break;
+ case DatFormat.CSV:
+ // Nothing yet
+ break;
case DatFormat.Logiqx:
case DatFormat.OfflineList:
case DatFormat.SabreDat:
@@ -130,6 +140,9 @@ namespace SabreTools.Helper.Dats
case DatFormat.RomCenter:
ParseRC(filename, sysid, srcid, filter, trim, single, root, logger, clean, descAsName);
break;
+ case DatFormat.TSV:
+ // Nothing yet
+ break;
default:
return;
}
diff --git a/SabreTools.Helper/Tools/FileTools.cs b/SabreTools.Helper/Tools/FileTools.cs
index 892e0c37..c4ac454a 100644
--- a/SabreTools.Helper/Tools/FileTools.cs
+++ b/SabreTools.Helper/Tools/FileTools.cs
@@ -73,7 +73,7 @@ namespace SabreTools.Helper.Tools
{
ext = ext.Substring(1);
}
- if (ext != "dat" && ext != "md5" && ext != "sfv" && ext != "sha1" && ext != "txt" && ext != "xml")
+ if (ext != "csv" && ext != "dat" && ext != "md5" && ext != "sfv" && ext != "sha1" && ext != "tsv" && ext != "txt" && ext != "xml")
{
return 0;
}
@@ -101,6 +101,10 @@ namespace SabreTools.Helper.Tools
{
return DatFormat.RedumpSHA1;
}
+ if (ext == "sha256")
+ {
+ return DatFormat.RedumpSHA256;
+ }
// For everything else, we need to read it
try
@@ -160,6 +164,14 @@ namespace SabreTools.Helper.Tools
{
return DatFormat.AttractMode;
}
+ else if (first.Contains("\"File Name\",\"Internal Name\",\"Description\""))
+ {
+ return DatFormat.CSV;
+ }
+ else if (first.Contains("\"File Name\"\t\"Internal Name\"\t\"Description\""))
+ {
+ return DatFormat.TSV;
+ }
else
{
return DatFormat.ClrMamePro;