Clean up based on .NET Core 3.1 reccomendations

This commit is contained in:
Matt Nadareski
2020-12-14 16:01:28 -08:00
parent 8870e9b287
commit ebd1044454
29 changed files with 130 additions and 222 deletions

View File

@@ -1727,9 +1727,9 @@ namespace SabreTools.Core.Tools
{
return supported switch
{
Supported.No => "no",
Supported.No => verbose ? "unsupported" : "no",
Supported.Partial => "partial",
Supported.Yes => "yes",
Supported.Yes => verbose ? "supported" : "yes",
_ => null,
};
}

View File

@@ -70,88 +70,37 @@ namespace SabreTools.DatFiles
/// <returns>DatFile of the specific internal type that corresponds to the inputs</returns>
public static DatFile Create(DatFormat? datFormat = null, DatFile baseDat = null, bool quotes = true)
{
switch (datFormat)
return datFormat switch
{
case DatFormat.AttractMode:
return new AttractMode(baseDat);
case DatFormat.ClrMamePro:
return new ClrMamePro(baseDat, quotes);
case DatFormat.CSV:
return new Formats.SeparatedValue(baseDat, ',');
case DatFormat.DOSCenter:
return new DosCenter(baseDat);
case DatFormat.EverdriveSMDB:
return new EverdriveSMDB(baseDat);
case DatFormat.Listrom:
return new Listrom(baseDat);
case DatFormat.Listxml:
return new Listxml(baseDat);
case DatFormat.Logiqx:
return new Logiqx(baseDat, false);
case DatFormat.LogiqxDeprecated:
return new Logiqx(baseDat, true);
case DatFormat.MissFile:
return new Missfile(baseDat);
case DatFormat.OfflineList:
return new OfflineList(baseDat);
case DatFormat.OpenMSX:
return new OpenMSX(baseDat);
case DatFormat.RedumpMD5:
return new Hashfile(baseDat, Hash.MD5);
case DatFormat.RedumpSFV:
return new Hashfile(baseDat, Hash.CRC);
case DatFormat.RedumpSHA1:
return new Hashfile(baseDat, Hash.SHA1);
case DatFormat.RedumpSHA256:
return new Hashfile(baseDat, Hash.SHA256);
case DatFormat.RedumpSHA384:
return new Hashfile(baseDat, Hash.SHA384);
case DatFormat.RedumpSHA512:
return new Hashfile(baseDat, Hash.SHA512);
case DatFormat.RedumpSpamSum:
return new Hashfile(baseDat, Hash.SpamSum);
case DatFormat.RomCenter:
return new RomCenter(baseDat);
case DatFormat.SabreJSON:
return new SabreJSON(baseDat);
case DatFormat.SabreXML:
return new SabreXML(baseDat);
case DatFormat.SoftwareList:
return new Formats.SoftwareList(baseDat);
case DatFormat.SSV:
return new Formats.SeparatedValue(baseDat, ';');
case DatFormat.TSV:
return new Formats.SeparatedValue(baseDat, '\t');
DatFormat.AttractMode => new AttractMode(baseDat),
DatFormat.ClrMamePro => new ClrMamePro(baseDat, quotes),
DatFormat.CSV => new SeparatedValue(baseDat, ','),
DatFormat.DOSCenter => new DosCenter(baseDat),
DatFormat.EverdriveSMDB => new EverdriveSMDB(baseDat),
DatFormat.Listrom => new Listrom(baseDat),
DatFormat.Listxml => new Listxml(baseDat),
DatFormat.Logiqx => new Logiqx(baseDat, false),
DatFormat.LogiqxDeprecated => new Logiqx(baseDat, true),
DatFormat.MissFile => new Missfile(baseDat),
DatFormat.OfflineList => new OfflineList(baseDat),
DatFormat.OpenMSX => new OpenMSX(baseDat),
DatFormat.RedumpMD5 => new Hashfile(baseDat, Hash.MD5),
DatFormat.RedumpSFV => new Hashfile(baseDat, Hash.CRC),
DatFormat.RedumpSHA1 => new Hashfile(baseDat, Hash.SHA1),
DatFormat.RedumpSHA256 => new Hashfile(baseDat, Hash.SHA256),
DatFormat.RedumpSHA384 => new Hashfile(baseDat, Hash.SHA384),
DatFormat.RedumpSHA512 => new Hashfile(baseDat, Hash.SHA512),
DatFormat.RedumpSpamSum => new Hashfile(baseDat, Hash.SpamSum),
DatFormat.RomCenter => new RomCenter(baseDat),
DatFormat.SabreJSON => new SabreJSON(baseDat),
DatFormat.SabreXML => new SabreXML(baseDat),
DatFormat.SoftwareList => new Formats.SoftwareList(baseDat),
DatFormat.SSV => new SeparatedValue(baseDat, ';'),
DatFormat.TSV => new SeparatedValue(baseDat, '\t'),
// We use new-style Logiqx as a backup for generic DatFile
case null:
default:
return new Logiqx(baseDat, false);
}
_ => new Logiqx(baseDat, false),
};
}
/// <summary>
@@ -213,7 +162,7 @@ namespace SabreTools.DatFiles
/// <returns>The key for the item</returns>
protected string ParseAddHelper(DatItem item)
{
string key = string.Empty;
string key;
// If we have a Disk, Media, or Rom, clean the hash data
if (item.ItemType == ItemType.Disk)
@@ -344,7 +293,7 @@ namespace SabreTools.DatFiles
protected string CreatePrefixPostfix(DatItem item, bool prefix)
{
// Initialize strings
string fix = string.Empty,
string fix,
game = item.Machine.Name,
name = item.GetName() ?? item.ItemType.ToString(),
crc = string.Empty,

View File

@@ -69,7 +69,7 @@ namespace SabreTools.DatFiles.Formats
Rom rom = new Rom
{
Name = svr.Line[1].Substring(fullname[0].Length + 1),
Name = svr.Line[1][(fullname[0].Length + 1)..],
Size = null, // No size provided, but we don't want the size being 0
CRC = svr.Line[4],
MD5 = svr.Line[3],

View File

@@ -222,7 +222,7 @@ namespace SabreTools.DatFiles.Formats
}
// Get the hash field and set final fields
string hash = string.Empty;
string hash;
switch (_hash)
{
case Hash.CRC:

View File

@@ -93,7 +93,7 @@ namespace SabreTools.DatFiles.Formats
logger.Warning($"Possibly malformed line: '{line}'");
string romname = split[0];
line = line.Substring(romname.Length);
line = line[romname.Length..];
// Next we separate the ROM into pieces
split = line.Split(new char[0], StringSplitOptions.RemoveEmptyEntries);

View File

@@ -398,8 +398,6 @@ namespace SabreTools.DatFiles.Formats
// Otherwise, add what is possible
reader.MoveToContent();
string key = string.Empty;
string temptype = reader.Name;
bool containsItems = false;
// Create a new machine
@@ -497,7 +495,7 @@ namespace SabreTools.DatFiles.Formats
archive.CopyMachineInformation(machine);
// Now process and add the archive
key = ParseAddHelper(archive);
ParseAddHelper(archive);
reader.Read();
break;
@@ -521,7 +519,7 @@ namespace SabreTools.DatFiles.Formats
biosSet.CopyMachineInformation(machine);
// Now process and add the biosSet
key = ParseAddHelper(biosSet);
ParseAddHelper(biosSet);
reader.Read();
break;
@@ -547,7 +545,7 @@ namespace SabreTools.DatFiles.Formats
disk.CopyMachineInformation(machine);
// Now process and add the disk
key = ParseAddHelper(disk);
ParseAddHelper(disk);
reader.Read();
break;
@@ -573,7 +571,7 @@ namespace SabreTools.DatFiles.Formats
media.CopyMachineInformation(machine);
// Now process and add the media
key = ParseAddHelper(media);
ParseAddHelper(media);
reader.Read();
break;
@@ -593,7 +591,7 @@ namespace SabreTools.DatFiles.Formats
release.CopyMachineInformation(machine);
// Now process and add the release
key = ParseAddHelper(release);
ParseAddHelper(release);
reader.Read();
break;
@@ -627,7 +625,7 @@ namespace SabreTools.DatFiles.Formats
rom.CopyMachineInformation(machine);
// Now process and add the rom
key = ParseAddHelper(rom);
ParseAddHelper(rom);
reader.Read();
break;
@@ -649,7 +647,7 @@ namespace SabreTools.DatFiles.Formats
sample.CopyMachineInformation(machine);
// Now process and add the sample
key = ParseAddHelper(sample);
ParseAddHelper(sample);
reader.Read();
break;

View File

@@ -536,7 +536,7 @@ namespace SabreTools.DatFiles.Formats
return base.CreateProperties(type, memberSerialization)
.OrderBy(p => BaseTypesAndSelf(p.DeclaringType).Count()).ToList();
IEnumerable<Type> BaseTypesAndSelf(Type t)
static IEnumerable<Type> BaseTypesAndSelf(Type t)
{
while (t != null)
{

View File

@@ -34,7 +34,7 @@ namespace SabreTools.DatFiles
/// <summary>
/// Internal dictionary for the class
/// </summary>
private ConcurrentDictionary<string, List<DatItem>> items;
private readonly ConcurrentDictionary<string, List<DatItem>> items;
/// <summary>
/// Lock for statistics calculation
@@ -44,12 +44,7 @@ namespace SabreTools.DatFiles
/// <summary>
/// Logging object
/// </summary>
private Logger logger;
/// <summary>
/// Static logger for static methods
/// </summary>
private static Logger staticLogger = new Logger();
private readonly Logger logger;
#endregion

View File

@@ -370,7 +370,7 @@ namespace SabreTools.DatItems
public override string GetKey(ItemKey bucketedBy, bool lower = true, bool norename = true)
{
// Set the output key as the default blank string
string key = string.Empty;
string key;
// Now determine what the key should be based on the bucketedBy value
switch (bucketedBy)

View File

@@ -293,7 +293,7 @@ namespace SabreTools.DatItems
public override string GetKey(ItemKey bucketedBy, bool lower = true, bool norename = true)
{
// Set the output key as the default blank string
string key = string.Empty;
string key;
// Now determine what the key should be based on the bucketedBy value
switch (bucketedBy)

View File

@@ -629,7 +629,7 @@ namespace SabreTools.DatItems
public override string GetKey(ItemKey bucketedBy, bool lower = true, bool norename = true)
{
// Set the output key as the default blank string
string key = string.Empty;
string key;
// Now determine what the key should be based on the bucketedBy value
switch (bucketedBy)

View File

@@ -415,22 +415,22 @@ namespace SabreTools.DatTools
// If we have a Disk, then the ".chd" extension needs to be removed
if (datItem.ItemType == ItemType.Disk && itemName.EndsWith(".chd"))
{
itemName = itemName.Substring(0, itemName.Length - 4);
itemName = itemName[0..^4];
}
// If we have a Media, then the extension needs to be removed
else if (datItem.ItemType == ItemType.Media)
{
if (itemName.EndsWith(".dicf"))
itemName = itemName.Substring(0, itemName.Length - 5);
itemName = itemName[0..^5];
else if (itemName.EndsWith(".aaru"))
itemName = itemName.Substring(0, itemName.Length - 5);
itemName = itemName[0..^5];
else if (itemName.EndsWith(".aaruformat"))
itemName = itemName.Substring(0, itemName.Length - 11);
itemName = itemName[0..^11];
else if (itemName.EndsWith(".aaruf"))
itemName = itemName.Substring(0, itemName.Length - 6);
itemName = itemName[0..^6];
else if (itemName.EndsWith(".aif"))
itemName = itemName.Substring(0, itemName.Length - 4);
itemName = itemName[0..^4];
}
// Set the item name back

View File

@@ -158,8 +158,7 @@ namespace SabreTools.DatTools
try
{
using (StreamReader sr = File.OpenText(filename))
{
using StreamReader sr = File.OpenText(filename);
first = sr.ReadLine().ToLowerInvariant();
while ((string.IsNullOrWhiteSpace(first) || first.StartsWith("<!--"))
&& !sr.EndOfStream)
@@ -177,7 +176,6 @@ namespace SabreTools.DatTools
}
}
}
}
catch { }
// If we have an XML-based DAT

View File

@@ -46,11 +46,9 @@ namespace SabreTools.FileTypes.Aaru
/// <param name="filename">Filename respresenting the AaruFormat file</param>
public static AaruFormat Create(string filename)
{
using (FileStream fs = File.OpenRead(filename))
{
using FileStream fs = File.OpenRead(filename);
return Create(fs);
}
}
/// <summary>
/// Create a new AaruFormat from an input stream

View File

@@ -227,13 +227,12 @@ namespace SabreTools.FileTypes.Archives
if (this.AvailableHashes == Hash.CRC)
{
gzipEntryRom.Filename = gamename;
using (BinaryReader br = new BinaryReader(File.OpenRead(this.Filename)))
{
using BinaryReader br = new BinaryReader(File.OpenRead(this.Filename));
br.BaseStream.Seek(-8, SeekOrigin.End);
gzipEntryRom.CRC = br.ReadBytesBigEndian(4);
gzipEntryRom.Size = br.ReadInt32BigEndian();
}
}
// Otherwise, use the stream directly
else
{

View File

@@ -178,11 +178,9 @@ namespace SabreTools.FileTypes.Archives
// Otherwise, use the stream directly
else
{
using (Stream entryStream = entry.OpenEntryStream())
{
using Stream entryStream = entry.OpenEntryStream();
rarEntryRom = GetInfo(entryStream, size: entry.Size, hashes: this.AvailableHashes);
}
}
// Fill in comon details and add to the list
rarEntryRom.Filename = entry.Key;

View File

@@ -183,11 +183,9 @@ namespace SabreTools.FileTypes.Archives
// Otherwise, use the stream directly
else
{
using (Stream entryStream = entry.OpenEntryStream())
{
using Stream entryStream = entry.OpenEntryStream();
tarEntryRom = GetInfo(entryStream, size: entry.Size, hashes: this.AvailableHashes);
}
}
// Fill in comon details and add to the list
tarEntryRom.Filename = entry.Key;

View File

@@ -211,13 +211,12 @@ namespace SabreTools.FileTypes.Archives
if (this.AvailableHashes == Hash.CRC)
{
xzEntryRom.Filename = gamename;
using (BinaryReader br = new BinaryReader(File.OpenRead(this.Filename)))
{
using BinaryReader br = new BinaryReader(File.OpenRead(this.Filename));
br.BaseStream.Seek(-8, SeekOrigin.End);
xzEntryRom.CRC = br.ReadBytesBigEndian(4);
xzEntryRom.Size = br.ReadInt32BigEndian();
}
}
// Otherwise, use the stream directly
else
{

View File

@@ -99,26 +99,15 @@ namespace SabreTools.FileTypes
/// <returns>Archive object representing the inputs</returns>
public static BaseArchive Create(FileType archiveType)
{
switch (archiveType)
return archiveType switch
{
case FileType.GZipArchive:
return new GZipArchive();
case FileType.RarArchive:
return new RarArchive();
case FileType.SevenZipArchive:
return new SevenZipArchive();
case FileType.TapeArchive:
return new TapeArchive();
case FileType.ZipArchive:
return new ZipArchive();
default:
return null;
}
FileType.GZipArchive => new GZipArchive(),
FileType.RarArchive => new RarArchive(),
FileType.SevenZipArchive => new SevenZipArchive(),
FileType.TapeArchive => new TapeArchive(),
FileType.ZipArchive => new ZipArchive(),
_ => null,
};
}
#endregion

View File

@@ -29,11 +29,9 @@ namespace SabreTools.FileTypes.CHD
/// <param name="filename">Filename respresenting the CHD file</param>
public static CHDFile Create(string filename)
{
using (FileStream fs = File.OpenRead(filename))
{
using FileStream fs = File.OpenRead(filename);
return Create(fs);
}
}
/// <summary>
/// Create a new CHDFile from an input stream
@@ -108,21 +106,15 @@ namespace SabreTools.FileTypes.CHD
if (!string.Equals(new string(tag), "MComprHD", StringComparison.Ordinal))
return 0;
switch (version)
return version switch
{
case 1:
return length == CHDFileV1.HeaderSize ? version : 0;
case 2:
return length == CHDFileV2.HeaderSize ? version : 0;
case 3:
return length == CHDFileV3.HeaderSize ? version : 0;
case 4:
return length == CHDFileV4.HeaderSize ? version : 0;
case 5:
return length == CHDFileV5.HeaderSize ? version : 0;
default:
return 0;
}
1 => length == CHDFileV1.HeaderSize ? version : 0,
2 => length == CHDFileV2.HeaderSize ? version : 0,
3 => length == CHDFileV3.HeaderSize ? version : 0,
4 => length == CHDFileV4.HeaderSize ? version : 0,
5 => length == CHDFileV5.HeaderSize ? version : 0,
_ => 0,
};
}
/// <summary>
@@ -133,21 +125,15 @@ namespace SabreTools.FileTypes.CHD
/// <returns>Populated CHD file, null on failure</returns>
private static CHDFile ReadAsVersion(Stream stream, uint version)
{
switch (version)
return version switch
{
case 1:
return CHDFileV1.Deserialize(stream);
case 2:
return CHDFileV2.Deserialize(stream);
case 3:
return CHDFileV3.Deserialize(stream);
case 4:
return CHDFileV4.Deserialize(stream);
case 5:
return CHDFileV5.Deserialize(stream);
default:
return null;
}
1 => CHDFileV1.Deserialize(stream),
2 => CHDFileV2.Deserialize(stream),
3 => CHDFileV3.Deserialize(stream),
4 => CHDFileV4.Deserialize(stream),
5 => CHDFileV5.Deserialize(stream),
_ => null,
};
}
#endregion

View File

@@ -32,7 +32,7 @@ namespace SabreTools.FileTypes
/// <summary>
/// Flag specific to Folder to omit Machine name from output path
/// </summary>
private bool writeToParent = false;
private readonly bool writeToParent = false;
#endregion

View File

@@ -58,7 +58,7 @@ namespace SabreTools.Filtering
string inputTrimmed = input.Trim('"', ' ', '\t');
string fieldString = inputTrimmed.Split(':')[0].ToLowerInvariant().Trim('"', ' ', '\t');
string fileString = inputTrimmed.Substring(fieldString.Length + 1).Trim('"', ' ', '\t');
string fileString = inputTrimmed[(fieldString.Length + 1)..].Trim('"', ' ', '\t');
item.DatItemField = fieldString.AsDatItemField();
item.MachineField = fieldString.AsMachineField();

View File

@@ -57,10 +57,10 @@ namespace SabreTools.Filtering
|| filterTrimmed.StartsWith("~")
|| filterTrimmed.StartsWith("not-");
filterTrimmed = filterTrimmed.TrimStart('!', '~');
filterTrimmed = filterTrimmed.StartsWith("not-") ? filterTrimmed.Substring(4) : filterTrimmed;
filterTrimmed = filterTrimmed.StartsWith("not-") ? filterTrimmed[4..] : filterTrimmed;
string filterFieldString = filterTrimmed.Split(':')[0].ToLowerInvariant().Trim('"', ' ', '\t');
string filterValue = filterTrimmed.Substring(filterFieldString.Length + 1).Trim('"', ' ', '\t');
string filterValue = filterTrimmed[(filterFieldString.Length + 1)..].Trim('"', ' ', '\t');
return (filterFieldString, filterValue, negate);
}

View File

@@ -153,9 +153,8 @@ namespace SabreTools.Filtering
{
if (straw is string)
{
string needleString = needle as string;
string strawString = straw as string;
if (!string.IsNullOrWhiteSpace(strawString) && needleString != null)
if (!string.IsNullOrWhiteSpace(strawString) && needle is string needleString)
{
string regexStraw = strawString;

View File

@@ -8,9 +8,9 @@ namespace SabreTools.Help
{
#region Private variables
private List<string> _header;
private readonly List<string> _header;
private Dictionary<string, Feature> _features;
private static string _barrier = "-----------------------------------------";
private const string _barrier = "-----------------------------------------";
#endregion
@@ -155,16 +155,18 @@ namespace SabreTools.Help
/// </summary>
public void OutputCredits()
{
List<string> credits = new List<string>();
credits.Add(_barrier);
credits.Add("Credits");
credits.Add(_barrier);
credits.Add(string.Empty);
credits.Add("Programmer / Lead: Matt Nadareski (darksabre76)");
credits.Add("Additional code: emuLOAD, @tractivo, motoschifo");
credits.Add("Testing: emuLOAD, @tractivo, Kludge, Obiwantje, edc");
credits.Add("Suggestions: edc, AcidX, Amiga12, EliUmniCk");
credits.Add("Based on work by: The Wizard of DATz");
List<string> credits = new List<string>
{
_barrier,
"Credits",
_barrier,
string.Empty,
"Programmer / Lead: Matt Nadareski (darksabre76)",
"Additional code: emuLOAD, @tractivo, motoschifo",
"Testing: emuLOAD, @tractivo, Kludge, Obiwantje, edc",
"Suggestions: edc, AcidX, Amiga12, EliUmniCk",
"Based on work by: The Wizard of DATz"
};
WriteOutWithPauses(credits);
}

View File

@@ -125,7 +125,7 @@ namespace SabreTools.IO.Readers
// Standalone (special case for DC dats)
if (CurrentLine.StartsWith("Name:"))
{
string temp = CurrentLine.Substring("Name:".Length).Trim();
string temp = CurrentLine["Name:".Length..].Trim();
CurrentLine = $"Name: {temp}";
}

View File

@@ -59,7 +59,7 @@ namespace SabreTools.IO.Writers
/// <summary>
/// Internal stream writer
/// </summary>
private StreamWriter sw;
private readonly StreamWriter sw;
/// <summary>
/// Stack for tracking current node

View File

@@ -9,7 +9,7 @@ namespace SabreTools.IO.Writers
/// <summary>
/// Internal stream writer for outputting
/// </summary>
private StreamWriter sw;
private readonly StreamWriter sw;
/// <summary>
/// Constructor for writing to a file

View File

@@ -9,7 +9,7 @@ namespace SabreTools.IO.Writers
/// <summary>
/// Internal stream writer for outputting
/// </summary>
private StreamWriter sw;
private readonly StreamWriter sw;
/// <summary>
/// Internal value if we've written a header before