From cfdd5256bd3f891307df72ce0f1a7f8932986739 Mon Sep 17 00:00:00 2001 From: Hisham Bin Ateya Date: Wed, 25 Mar 2026 23:51:47 +0300 Subject: [PATCH 1/2] Capitalize filter should make the first letter capital --- Fluid.Tests/StringFiltersTests.cs | 4 ++-- Fluid/Filters/StringFilters.cs | 8 ++------ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/Fluid.Tests/StringFiltersTests.cs b/Fluid.Tests/StringFiltersTests.cs index 51cd1e56..68b9968c 100644 --- a/Fluid.Tests/StringFiltersTests.cs +++ b/Fluid.Tests/StringFiltersTests.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Threading.Tasks; using Fluid.Values; using Fluid.Filters; @@ -32,7 +32,7 @@ public void Capitalize() var result = StringFilters.Capitalize(input, arguments, context); - Assert.Equal("Hello World", result.Result.ToStringValue()); + Assert.Equal("Hello world", result.Result.ToStringValue()); } [Fact] diff --git a/Fluid/Filters/StringFilters.cs b/Fluid/Filters/StringFilters.cs index ca6d58b9..41ec3dab 100644 --- a/Fluid/Filters/StringFilters.cs +++ b/Fluid/Filters/StringFilters.cs @@ -54,13 +54,9 @@ public static ValueTask Capitalize(FluidValue input, FilterArguments var source = input.ToStringValue().ToCharArray(); - for (var i = 0; i < source.Length; i++) + if (char.IsLetter(source[0])) { - char c; - if (i == 0 || char.IsWhiteSpace(c = source[i - 1]) || c == '-' || c == '.') - { - source[i] = char.ToUpper(source[i], context.CultureInfo); - } + source[0] = char.ToUpper(source[0], context.CultureInfo); } return CreateStringValue(new string(source), input); From c524179a34af4410d89e738dcfa8d0bd17c91e01 Mon Sep 17 00:00:00 2001 From: Hisham Bin Ateya Date: Thu, 26 Mar 2026 00:07:00 +0300 Subject: [PATCH 2/2] Fix the broken test --- Fluid/Filters/StringFilters.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fluid/Filters/StringFilters.cs b/Fluid/Filters/StringFilters.cs index 41ec3dab..a12d5781 100644 --- a/Fluid/Filters/StringFilters.cs +++ b/Fluid/Filters/StringFilters.cs @@ -54,7 +54,7 @@ public static ValueTask Capitalize(FluidValue input, FilterArguments var source = input.ToStringValue().ToCharArray(); - if (char.IsLetter(source[0])) + if (source.Length > 0 && char.IsLetter(source[0])) { source[0] = char.ToUpper(source[0], context.CultureInfo); }