]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
tpl/strings: Add TrimSpace function
authorJoe Mooring <joe.mooring@veriphor.com>
Sat, 19 Oct 2024 18:13:20 +0000 (11:13 -0700)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 19 Oct 2024 19:10:00 +0000 (21:10 +0200)
Closes #12962

tpl/strings/strings.go
tpl/strings/strings_test.go

index 02f9a2b1e4ae233c6346b031e1f34d73062562a1..eb5aee3cb05640388bfaeae590fff712cc1f254f 100644 (file)
@@ -450,6 +450,17 @@ func (ns *Namespace) Trim(s, cutset any) (string, error) {
        return strings.Trim(ss, sc), nil
 }
 
+// TrimSpace returns the given string, removing leading and trailing whitespace
+// as defined by Unicode.
+func (ns *Namespace) TrimSpace(s any) (string, error) {
+       ss, err := cast.ToStringE(s)
+       if err != nil {
+               return "", err
+       }
+
+       return strings.TrimSpace(ss), nil
+}
+
 // TrimLeft returns a slice of the string s with all leading characters
 // contained in cutset removed.
 func (ns *Namespace) TrimLeft(cutset, s any) (string, error) {
index 4fcd3b59ab1bc70d780abc1f8c93382292c0a826..0e6039ba137003f4d723451d506b13ef0fecd773 100644 (file)
@@ -854,3 +854,30 @@ func TestDiff(t *testing.T) {
 
        }
 }
+
+func TestTrimSpace(t *testing.T) {
+       t.Parallel()
+       c := qt.New(t)
+
+       for _, test := range []struct {
+               s      any
+               expect any
+       }{
+               {"\n\r test \n\r", "test"},
+               {template.HTML("\n\r test \n\r"), "test"},
+               {[]byte("\n\r test \n\r"), "test"},
+               // errors
+               {tstNoStringer{}, false},
+       } {
+
+               result, err := ns.TrimSpace(test.s)
+
+               if b, ok := test.expect.(bool); ok && !b {
+                       c.Assert(err, qt.Not(qt.IsNil))
+                       continue
+               }
+
+               c.Assert(err, qt.IsNil)
+               c.Assert(result, qt.Equals, test.expect)
+       }
+}