From 359350bfcba0136c55af11c348cdceca1344ef89 Mon Sep 17 00:00:00 2001 From: Alastair Pitts Date: Thu, 20 Jun 2024 16:19:21 +1000 Subject: [PATCH 1/2] Remove automatic suffix to Truncate function --- source/Octostache.Tests/FiltersFixture.cs | 11 ++++++++++- .../Templates/Functions/TextManipulationFunction.cs | 4 +++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/source/Octostache.Tests/FiltersFixture.cs b/source/Octostache.Tests/FiltersFixture.cs index aed7115..6b44d04 100644 --- a/source/Octostache.Tests/FiltersFixture.cs +++ b/source/Octostache.Tests/FiltersFixture.cs @@ -643,7 +643,16 @@ public void TruncateHandlesNegativeLength() public void TruncateTruncatesArgumentToSpecifiedLength() { var result = Evaluate(@"#{foo | Truncate 7}", new Dictionary { { "foo", "Octopus Deploy" } }); - result.Should().Be("Octopus..."); + result.Should().Be("Octopus"); + result.Should().HaveLength(7); + } + + [Fact] + public void TruncateTruncatesArgumentToSpecifiedLengthWithCustomSuffix() + { + var result = Evaluate(@"#{foo | Truncate 7 ""<|>""}", new Dictionary { { "foo", "Octopus Deploy" } }); + result.Should().Be("Octopus<|>"); + result.Should().HaveLength(10); } [Fact] diff --git a/source/Octostache/Templates/Functions/TextManipulationFunction.cs b/source/Octostache/Templates/Functions/TextManipulationFunction.cs index 5fa652b..571d4c5 100644 --- a/source/Octostache/Templates/Functions/TextManipulationFunction.cs +++ b/source/Octostache/Templates/Functions/TextManipulationFunction.cs @@ -118,11 +118,13 @@ class TextManipulationFunction } var length = int.Parse(options[0]); + var suffix = options.Length == 2 ? options[1] : null; return length < argument.Length - ? $"{argument.Substring(0, length)}..." + ? $"{argument.Substring(0, length)}{suffix}" : argument; } + [return: NotNullIfNotNull("argument")] public static string? Trim(string? argument, string[] options) { From 62c39b64b40fa73cc0cff568eda4db8a79802bc0 Mon Sep 17 00:00:00 2001 From: Alastair Pitts Date: Thu, 20 Jun 2024 16:55:59 +1000 Subject: [PATCH 2/2] Fix formatting --- source/Octostache.Tests/FiltersFixture.cs | 2 +- .../Octostache/Templates/Functions/TextManipulationFunction.cs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/source/Octostache.Tests/FiltersFixture.cs b/source/Octostache.Tests/FiltersFixture.cs index 6b44d04..ce05bc4 100644 --- a/source/Octostache.Tests/FiltersFixture.cs +++ b/source/Octostache.Tests/FiltersFixture.cs @@ -646,7 +646,7 @@ public void TruncateTruncatesArgumentToSpecifiedLength() result.Should().Be("Octopus"); result.Should().HaveLength(7); } - + [Fact] public void TruncateTruncatesArgumentToSpecifiedLengthWithCustomSuffix() { diff --git a/source/Octostache/Templates/Functions/TextManipulationFunction.cs b/source/Octostache/Templates/Functions/TextManipulationFunction.cs index 571d4c5..e3284f8 100644 --- a/source/Octostache/Templates/Functions/TextManipulationFunction.cs +++ b/source/Octostache/Templates/Functions/TextManipulationFunction.cs @@ -124,7 +124,6 @@ class TextManipulationFunction : argument; } - [return: NotNullIfNotNull("argument")] public static string? Trim(string? argument, string[] options) {