tpl/strings: Add TrimSpace function

Closes #12962
This commit is contained in:
Joe Mooring 2024-10-19 11:13:20 -07:00 committed by Bjørn Erik Pedersen
parent f5e54d9c7d
commit d37606d2c2
2 changed files with 38 additions and 0 deletions

View file

@ -450,6 +450,17 @@ func (ns *Namespace) Trim(s, cutset any) (string, error) {
return strings.Trim(ss, sc), nil 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 // TrimLeft returns a slice of the string s with all leading characters
// contained in cutset removed. // contained in cutset removed.
func (ns *Namespace) TrimLeft(cutset, s any) (string, error) { func (ns *Namespace) TrimLeft(cutset, s any) (string, error) {

View 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)
}
}