equipment-test/engine/modules/mono/editor/GodotTools/GodotTools/Utils/CollectionExtensions.cs
2025-01-17 16:36:38 +01:00

31 lines
847 B
C#

using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
namespace GodotTools.Utils
{
public static class CollectionExtensions
{
[return: NotNullIfNotNull("orElse")]
public static T? SelectFirstNotNull<T>(this IEnumerable<T> enumerable, Func<T, T?> predicate, T? orElse = null)
where T : class
{
foreach (T elem in enumerable)
{
T? result = predicate(elem);
if (result != null)
return result;
}
return orElse;
}
public static IEnumerable<string> EnumerateLines(this TextReader textReader)
{
string? line;
while ((line = textReader.ReadLine()) != null)
yield return line;
}
}
}