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>
|
||||
/// 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user