Skip to content

Commit

Permalink
tpl/strings: Add TrimSpace function
Browse files Browse the repository at this point in the history
Closes #12962
  • Loading branch information
jmooring authored and bep committed Oct 19, 2024
1 parent f5e54d9 commit d37606d
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
11 changes: 11 additions & 0 deletions tpl/strings/strings.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
27 changes: 27 additions & 0 deletions tpl/strings/strings_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}

0 comments on commit d37606d

Please sign in to comment.