mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Make reading helpers even more helpful
This commit is contained in:
@@ -22,26 +22,85 @@ namespace SabreTools.Models.Internal
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Read a key as a bool, returning null on error
|
/// Read a key as a bool, returning null on error
|
||||||
/// </summary>
|
/// </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>
|
/// <summary>
|
||||||
/// Read a key as a double, returning null on error
|
/// Read a key as a double, returning null on error
|
||||||
/// </summary>
|
/// </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>
|
/// <summary>
|
||||||
/// Read a key as a long, returning null on error
|
/// Read a key as a long, returning null on error
|
||||||
/// </summary>
|
/// </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>
|
/// <summary>
|
||||||
/// Read a key as a string, returning null on error
|
/// Read a key as a string, returning null on error
|
||||||
/// </summary>
|
/// </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>
|
/// <summary>
|
||||||
/// Read a key as a string[], returning null on error
|
/// Read a key as a string[], returning null on error
|
||||||
/// </summary>
|
/// </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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user