Skip to content

Commit a057e75

Browse files
committed
Use span over array
1 parent df1d698 commit a057e75

File tree

1 file changed

+22
-33
lines changed

1 file changed

+22
-33
lines changed

src/DynamoDBGenerator.SourceGenerator/Extensions/StringExtensions.cs

Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,53 +6,44 @@ public static class StringExtensions
66
{
77
public static string ToCamelCaseFromPascal(this string str, [CallerMemberName] string? memberName = null)
88
{
9-
return ToCamelCaseFromPascal(str.AsSpan(), memberName).ToString();
10-
}
11-
12-
public static string ToPrivateFieldFromPascal(this string str, [CallerMemberName] string? memberName = null)
13-
{
14-
return ToPrivateFieldFromPascal(str.AsSpan(), memberName).ToString();
15-
}
16-
17-
public static ReadOnlySpan<char> ToPrivateFieldFromPascal(this ReadOnlySpan<char> span,
18-
[CallerMemberName] string? memberName = null)
19-
{
9+
var span = str.AsSpan();
2010
if (span.Length is 0)
2111
throw new ArgumentException($"Null or Empty string was provided from '{memberName}'");
2212

23-
var array = new char[span.Length + 1];
13+
if (char.IsLower(span[0]))
14+
return str;
2415

25-
array[0] = '_';
26-
array[1] = char.ToLowerInvariant(span[0]);
16+
Span<char> array = stackalloc char[span.Length];
17+
18+
array[0] = char.ToLowerInvariant(span[0]);
2719

2820
// Skip first element since we handled it manually.
2921
for (var i = 1; i < span.Length; i++)
30-
array[i + 1] = span[i];
22+
array[i] = span[i];
3123

32-
return array;
24+
return array.ToString();
3325
}
3426

35-
public static ReadOnlySpan<char> ToCamelCaseFromPascal(this ReadOnlySpan<char> span,
36-
[CallerMemberName] string? memberName = null)
27+
public static string ToPrivateFieldFromPascal(this string str, [CallerMemberName] string? memberName = null)
3728
{
29+
var span = str.AsSpan();
3830
if (span.Length is 0)
3931
throw new ArgumentException($"Null or Empty string was provided from '{memberName}'");
4032

41-
if (char.IsLower(span[0]))
42-
return span;
43-
44-
var array = new char[span.Length];
33+
Span<char> array = stackalloc char[span.Length + 1];
4534

46-
array[0] = char.ToLowerInvariant(span[0]);
35+
array[0] = '_';
36+
array[1] = char.ToLowerInvariant(span[0]);
4737

4838
// Skip first element since we handled it manually.
4939
for (var i = 1; i < span.Length; i++)
50-
array[i] = span[i];
40+
array[i + 1] = span[i];
5141

52-
return array;
42+
return array.ToString();
5343
}
5444

55-
public static IEnumerable<string> ScopeTo(this IEnumerable<string> content, string header) => CreateScope(header, content);
45+
public static IEnumerable<string> ScopeTo(this IEnumerable<string> content, string header) =>
46+
CreateScope(header, content);
5647

5748
public static IEnumerable<string> CreateScope(this string header, IEnumerable<string> content) => content
5849
.Select(x => $" {x}")
@@ -83,15 +74,13 @@ public static IEnumerable<string> CreateScope(this string header, string content
8374

8475
public static string ToAlphaNumericMethodName(this string txt)
8576
{
86-
var arr = new char[txt.Length];
8777
var index = 0;
8878

89-
for (var i = 0; i < txt.Length; i++)
90-
{
91-
var c = txt[i];
92-
if (char.IsLetter(c) || (index > 0 && char.IsNumber(c))) arr[index++] = c;
93-
}
79+
Span<char> arr = stackalloc char[txt.Length];
80+
foreach (var c in txt.AsSpan())
81+
if (char.IsLetter(c) || (index > 0 && char.IsNumber(c)))
82+
arr[index++] = c;
9483

95-
return new string(arr, 0, index);
84+
return arr.Slice(0, index).ToString();
9685
}
9786
}

0 commit comments

Comments
 (0)