Make reading helpers even more helpful

This commit is contained in:
Matt Nadareski
2023-08-11 11:58:54 -04:00
parent 495b69186e
commit 9ff3c4e7b6

View File

@@ -22,26 +22,85 @@ namespace SabreTools.Models.Internal
/// <summary>
/// Read a key as a bool, returning null on error
/// </summary>
public bool? ReadBool(string key) => Read<bool>(key);
public bool? ReadBool(string key)
{
bool? asBool = Read<bool>(key);
if (asBool != null)
return asBool;
string? asString = Read<string>(key);
return asString?.ToLowerInvariant() switch
{
"true" => true,
"yes" => true,
"false" => false,
"no" => false,
_ => null,
};
}
/// <summary>
/// Read a key as a double, returning null on error
/// </summary>
public double? ReadDouble(string key) => Read<double>(key);
public double? ReadDouble(string key)
{
double? asDouble = Read<double>(key);
if (asDouble != null)
return asDouble;
string? asString = Read<string>(key);
if (asString != null && double.TryParse(asString, out double asStringDouble))
return asStringDouble;
return null;
}
/// <summary>
/// Read a key as a long, returning null on error
/// </summary>
public long? ReadLong(string key) => Read<long>(key);
public long? ReadLong(string key)
{
long? asLong = Read<long>(key);
if (asLong != null)
return asLong;
string? asString = Read<string>(key);
if (asString != null && long.TryParse(asString, out long asStringLong))
return asStringLong;
return null;
}
/// <summary>
/// Read a key as a string, returning null on error
/// </summary>
public string? ReadString(string key) => Read<string>(key);
public string? ReadString(string key)
{
string? asString = Read<string>(key);
if (asString != null)
return asString;
string[]? asArray = Read<string[]>(key);
if (asArray != null)
return string.Join(',', asArray);
return null;
}
/// <summary>
/// Read a key as a string[], returning null on error
/// </summary>
public string[]? ReadStringArray(string key) => Read<string[]>(key);
public string[]? ReadStringArray(string key)
{
string[]? asArray = Read<string[]>(key);
if (asArray != null)
return asArray;
string? asString = Read<string>(key);
if (asString != null)
return new string[] { asString };
return null;
}
}
}