diff --git a/src/SmartFormat.Tests/Extensions/SmartExtensionsTests.cs b/src/SmartFormat.Tests/Extensions/SmartExtensionsTests.cs index 8ba77235..4a0c6165 100644 --- a/src/SmartFormat.Tests/Extensions/SmartExtensionsTests.cs +++ b/src/SmartFormat.Tests/Extensions/SmartExtensionsTests.cs @@ -33,6 +33,17 @@ public void Test_AppendLine() Assert.That(actual, Is.EqualTo("these are the args" + Environment.NewLine)); } + [Test] + public void Test_AppendLine_Chained() + { + var actual = new StringBuilder() + .AppendLineSmart("{0} {1} {2}", "these", "are", "the") + .Append("args") + .ToString(); + + Assert.That(actual, Is.EqualTo("these are the" + Environment.NewLine + "args")); + } + [Test] public void Test_Append() { @@ -44,6 +55,18 @@ public void Test_Append() Assert.That(actual, Is.EqualTo("these are the args")); } + [Test] + public void Test_Append_Chained() + { + var actual = new StringBuilder() + .AppendSmart("{0} {1}", "these", "are") + .Append(' ') + .AppendSmart("{0} {1}", "the", "args") + .ToString(); + + Assert.That(actual, Is.EqualTo("these are the args")); + } + #endregion #region : TextWriterTests : diff --git a/src/SmartFormat/SmartExtensions.cs b/src/SmartFormat/SmartExtensions.cs index b19eda6f..91680488 100644 --- a/src/SmartFormat/SmartExtensions.cs +++ b/src/SmartFormat/SmartExtensions.cs @@ -1,4 +1,4 @@ -// +// // Copyright SmartFormat Project maintainers and contributors. // Licensed under the MIT license. @@ -19,20 +19,22 @@ public static class SmartExtensions /// The StringBuilder that will be used for output /// The template that defines how the arguments are formatted /// A list of arguments to be used in formatting - public static void AppendSmart(this StringBuilder sb, string format, params object[] args) + public static StringBuilder AppendSmart(this StringBuilder sb, string format, params object[] args) { var output = new StringOutput(sb); Smart.Default.FormatInto(output, format, args); + return sb; } /// AppendLines a formatted string, using the same semantics as Smart.Format. /// The StringBuilder that will be used for output /// The template that defines how the arguments are formatted /// A list of arguments to be used in formatting - public static void AppendLineSmart(this StringBuilder sb, string format, params object[] args) + public static StringBuilder AppendLineSmart(this StringBuilder sb, string format, params object[] args) { AppendSmart(sb, format, args); sb.AppendLine(); + return sb; } #endregion @@ -72,4 +74,4 @@ public static string FormatSmart(this string format, params object[] args) } #endregion -} \ No newline at end of file +}