Skip to content

Commit e282d81

Browse files
bCambalinkdotnet
authored andcommitted
feat: Added AppendSpan
1 parent bd256ef commit e282d81

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/LinkDotNet.StringBuilder/ValueStringBuilder.Append.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,19 @@ public void AppendLine(scoped ReadOnlySpan<char> str)
136136
Append(string.Concat(str, Environment.NewLine));
137137
}
138138

139+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
140+
public Span<char> AppendSpan(int length)
141+
{
142+
int origPos = bufferPosition;
143+
if (origPos > buffer.Length - length)
144+
{
145+
Grow(length);
146+
}
147+
148+
bufferPosition = origPos + length;
149+
return buffer.Slice(origPos, length);
150+
}
151+
139152
[MethodImpl(MethodImplOptions.AggressiveInlining)]
140153
private void AppendSpanFormattable<T>(T value, ReadOnlySpan<char> format = default, int bufferSize = 36)
141154
where T : ISpanFormattable

tests/LinkDotNet.StringBuilder.UnitTests/ValueStringBuilder.Append.Tests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,18 @@ public void ShouldAppendLine()
4747
stringBuilder.ToString().Should().Contain("Hello").And.Contain(Environment.NewLine);
4848
}
4949

50+
[Fact]
51+
public void ShouldAppendSpan()
52+
{
53+
using var stringBuilder = new ValueStringBuilder();
54+
55+
var returned = stringBuilder.AppendSpan(2);
56+
57+
stringBuilder.Length.Should().Be(2);
58+
59+
stringBuilder.ToString().Should().Be(returned.ToString());
60+
}
61+
5062
[Fact]
5163
public void ShouldOnlyAddNewline()
5264
{

0 commit comments

Comments
 (0)