This commit is contained in:
Chris Cameron
2018-04-05 11:49:46 -04:00
parent a8d2c7e1bf
commit 9d034872cb

View File

@@ -1062,12 +1062,14 @@ namespace ICD.Common.Utils.Extensions
{ {
public readonly T value; public readonly T value;
public readonly bool isParsed; public readonly bool isParsed;
public TryParseStruct(T value, bool isParsed) public TryParseStruct(T value, bool isParsed)
{ {
this.value = value; this.value = value;
this.isParsed = isParsed; this.isParsed = isParsed;
} }
} }
// since Func<...,T> can't specify `out` parameters // since Func<...,T> can't specify `out` parameters
public delegate bool TryParseDelegate<T>(string input, out T output); public delegate bool TryParseDelegate<T>(string input, out T output);
@@ -1079,7 +1081,8 @@ namespace ICD.Common.Utils.Extensions
/// <param name="extends">enumerable of strings to parse</param> /// <param name="extends">enumerable of strings to parse</param>
/// <param name="tryParseFunc">TryParse function for given type</param> /// <param name="tryParseFunc">TryParse function for given type</param>
/// <returns>enumerable of successfully parsed values</returns> /// <returns>enumerable of successfully parsed values</returns>
public static IEnumerable<T> TryParseSkipFailures<T>(this IEnumerable<string> extends, TryParseDelegate<T> tryParseFunc) public static IEnumerable<T> TryParseSkipFailures<T>(this IEnumerable<string> extends,
TryParseDelegate<T> tryParseFunc)
{ {
if (extends == null) if (extends == null)
throw new ArgumentNullException("extends"); throw new ArgumentNullException("extends");
@@ -1088,13 +1091,13 @@ namespace ICD.Common.Utils.Extensions
throw new ArgumentNullException("tryParseFunc"); throw new ArgumentNullException("tryParseFunc");
return extends.Select(str => return extends.Select(str =>
{ {
T value = default(T); T value;
bool isParsed = tryParseFunc(str, out value); bool isParsed = tryParseFunc(str, out value);
return new TryParseStruct<T>(value, isParsed); return new TryParseStruct<T>(value, isParsed);
}) })
.Where(v => v.isParsed == true) .Where(v => v.isParsed)
.Select(v => v.value); .Select(v => v.value);
} }
#if SIMPLSHARP #if SIMPLSHARP