Skip to content

Commit 3993f24

Browse files
committed
simplified checking for StringSplitOptions flags
1 parent 8453e23 commit 3993f24

7 files changed

+39
-36
lines changed

src/Enumerators/Split/SpanSplitStringSplitOptionsEnumerator.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,8 @@ public SpanSplitStringSplitOptionsEnumerator(ReadOnlySpan<char> source, char del
2929
{
3030
Span = source;
3131
Delimiter = delimiter;
32-
#if NET5_0_OR_GREATER
33-
TrimEntries = options.HasFlag(StringSplitOptions.TrimEntries);
34-
#else
35-
TrimEntries = false;
36-
#endif
37-
RemoveEmptyEntries = options.HasFlag(StringSplitOptions.RemoveEmptyEntries);
32+
TrimEntries = options.IsTrimEntriesSet();
33+
RemoveEmptyEntries = options.IsRemoveEmptyEntriesSet();
3834
EnumerationDone = false;
3935
Current = default;
4036
}

src/Enumerators/Split/SpanSplitStringSplitOptionsWithCountEnumerator.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,8 @@ public SpanSplitStringSplitOptionsWithCountEnumerator(ReadOnlySpan<char> source,
3434
Span = source;
3535
Delimiter = delimiter;
3636
CurrentCount = count.ThrowIfNegative();
37-
#if NET5_0_OR_GREATER
38-
TrimEntries = options.HasFlag(StringSplitOptions.TrimEntries);
39-
#else
40-
TrimEntries = false;
41-
#endif
42-
RemoveEmptyEntries = options.HasFlag(StringSplitOptions.RemoveEmptyEntries);
37+
TrimEntries = options.IsTrimEntriesSet();
38+
RemoveEmptyEntries = options.IsRemoveEmptyEntriesSet();
4339
CountExceedingBehaviour = countExceedingBehaviour.ThrowIfInvalid();
4440
EnumerationDone = count == 0;
4541
Current = default;

src/Enumerators/SplitAny/SpanSplitAnyStringSplitOptionsEnumerator.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,8 @@ public SpanSplitAnyStringSplitOptionsEnumerator(ReadOnlySpan<char> source, ReadO
2929
{
3030
Span = source;
3131
Delimiters = delimiters;
32-
#if NET5_0_OR_GREATER
33-
TrimEntries = options.HasFlag(StringSplitOptions.TrimEntries);
34-
#else
35-
TrimEntries = false;
36-
#endif
37-
RemoveEmptyEntries = options.HasFlag(StringSplitOptions.RemoveEmptyEntries);
32+
TrimEntries = options.IsTrimEntriesSet();
33+
RemoveEmptyEntries = options.IsRemoveEmptyEntriesSet();
3834
EnumerationDone = false;
3935
Current = default;
4036
}

src/Enumerators/SplitAny/SpanSplitAnyStringSplitOptionsWithCountEnumerator.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,8 @@ public SpanSplitAnyStringSplitOptionsWithCountEnumerator(ReadOnlySpan<char> sour
3434
Span = source;
3535
Delimiters = delimiters;
3636
CurrentCount = count.ThrowIfNegative();
37-
#if NET5_0_OR_GREATER
38-
TrimEntries = options.HasFlag(StringSplitOptions.TrimEntries);
39-
#else
40-
TrimEntries = false;
41-
#endif
42-
RemoveEmptyEntries = options.HasFlag(StringSplitOptions.RemoveEmptyEntries);
37+
TrimEntries = options.IsTrimEntriesSet();
38+
RemoveEmptyEntries = options.IsRemoveEmptyEntriesSet();
4339
CountExceedingBehaviour = countExceedingBehaviour.ThrowIfInvalid();
4440
EnumerationDone = count == 0;
4541
Current = default;

src/Enumerators/SplitSequence/SpanSplitSequenceStringSplitOptionsEnumerator.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,8 @@ public SpanSplitSequenceStringSplitOptionsEnumerator(ReadOnlySpan<char> source,
3030
Span = source;
3131
Delimiter = delimiter;
3232
DelimiterLength = delimiter.Length;
33-
#if NET5_0_OR_GREATER
34-
TrimEntries = options.HasFlag(StringSplitOptions.TrimEntries);
35-
#else
36-
TrimEntries = false;
37-
#endif
38-
RemoveEmptyEntries = options.HasFlag(StringSplitOptions.RemoveEmptyEntries);
33+
TrimEntries = options.IsTrimEntriesSet();
34+
RemoveEmptyEntries = options.IsRemoveEmptyEntriesSet();
3935
EnumerationDone = false;
4036
Current = default;
4137
}

src/Enumerators/SplitSequence/SpanSplitSequenceStringSplitOptionsWithCountEnumerator.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,8 @@ public SpanSplitSequenceStringSplitOptionsWithCountEnumerator(ReadOnlySpan<char>
3535
Delimiter = delimiter;
3636
DelimiterLength = delimiter.Length;
3737
CurrentCount = count.ThrowIfNegative();
38-
#if NET5_0_OR_GREATER
39-
TrimEntries = options.HasFlag(StringSplitOptions.TrimEntries);
40-
#else
41-
TrimEntries = false;
42-
#endif
43-
RemoveEmptyEntries = options.HasFlag(StringSplitOptions.RemoveEmptyEntries);
38+
TrimEntries = options.IsTrimEntriesSet();
39+
RemoveEmptyEntries = options.IsRemoveEmptyEntriesSet();
4440
CountExceedingBehaviour = countExceedingBehaviour.ThrowIfInvalid();
4541
EnumerationDone = count == 0;
4642
Current = default;

src/InternalExtensions.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,32 @@ public static int ThrowIfNegative(this int value
3333

3434
return value;
3535
}
36+
37+
/// <summary>
38+
/// Determines whether the <see cref="StringSplitOptions.RemoveEmptyEntries"/> bit field is set in the current instance.
39+
/// </summary>
40+
/// <param name="options">The <see cref="StringSplitOptions"/> instance to test.</param>
41+
/// <returns><see langword="true"/> if <paramref name="options"/> has the <see cref="StringSplitOptions.RemoveEmptyEntries"/> bit field set; <see langword="false"/> otherwise.</returns>
42+
public static bool IsRemoveEmptyEntriesSet(this StringSplitOptions options)
43+
{
44+
return options.HasFlag(StringSplitOptions.RemoveEmptyEntries);
45+
}
46+
47+
/// <summary>
48+
/// Determines whether the <see cref="StringSplitOptions.TrimEntries"/> bit field is set in the current instance.
49+
/// </summary>
50+
/// <remarks>
51+
/// In runtimes before .NET 5 this always returns <see langword="false"/>.
52+
/// </remarks>
53+
/// <param name="options">The <see cref="StringSplitOptions"/> instance to test.</param>
54+
/// <returns><see langword="true"/> if <paramref name="options"/> has the <see cref="StringSplitOptions.TrimEntries"/> bit field set; <see langword="false"/> otherwise.</returns>
55+
public static bool IsTrimEntriesSet(this StringSplitOptions options)
56+
{
57+
#if NET5_0_OR_GREATER
58+
return options.HasFlag(StringSplitOptions.TrimEntries);
59+
#else
60+
return false;
61+
#endif
62+
}
3663
}
3764
}

0 commit comments

Comments
 (0)