From e4dda283bb3d04ecc9fed839b5e355f551082d3b Mon Sep 17 00:00:00 2001 From: Phil Scott Date: Sat, 6 Mar 2021 09:57:31 -0500 Subject: [PATCH] Adds overloads for MarkUp methods without args These methods don't require a string.format call so we'll directly call the Render method without a call to string.format. Added bonus of a a couple fewer allocations too. --- src/Spectre.Console.Tests/Unit/MarkupTests.cs | 14 +++++++++++ .../AnsiConsoleExtensions.Markup.cs | 24 +++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/Spectre.Console.Tests/Unit/MarkupTests.cs b/src/Spectre.Console.Tests/Unit/MarkupTests.cs index 9b1016d..baba137 100644 --- a/src/Spectre.Console.Tests/Unit/MarkupTests.cs +++ b/src/Spectre.Console.Tests/Unit/MarkupTests.cs @@ -71,5 +71,19 @@ namespace Spectre.Console.Tests.Unit // Then console.Output.ShouldBe(output); } + + [Fact] + public void Should_not_fail_with_brackets_on_calls_without_args() + { + // Given + var console = new FakeAnsiConsole(ColorSystem.Standard, AnsiSupport.Yes); + + // When + console.MarkupLine("{"); + + // Then + console.Output.NormalizeLineEndings() + .ShouldBe("{\n"); + } } } diff --git a/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs b/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs index e150b1f..528dc06 100644 --- a/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs +++ b/src/Spectre.Console/Extensions/AnsiConsoleExtensions.Markup.cs @@ -28,7 +28,17 @@ namespace Spectre.Console /// An array of objects to write. public static void Markup(this IAnsiConsole console, IFormatProvider provider, string format, params object[] args) { - console.Render(MarkupParser.Parse(string.Format(provider, format, args))); + Markup(console, string.Format(provider, format, args)); + } + + /// + /// Writes the specified markup to the console. + /// + /// The console to write to. + /// The value to write. + public static void Markup(this IAnsiConsole console, string value) + { + console.Render(MarkupParser.Parse(value)); } /// @@ -42,6 +52,16 @@ namespace Spectre.Console MarkupLine(console, CultureInfo.CurrentCulture, format, args); } + /// + /// Writes the specified markup, followed by the current line terminator, to the console. + /// + /// The console to write to. + /// The value to write. + public static void MarkupLine(this IAnsiConsole console, string value) + { + Markup(console, value + Environment.NewLine); + } + /// /// Writes the specified markup, followed by the current line terminator, to the console. /// @@ -54,4 +74,4 @@ namespace Spectre.Console Markup(console, provider, format + Environment.NewLine, args); } } -} +} \ No newline at end of file