]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
tpl/strings: Add strings.ContainsNonSpace
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 31 Jan 2023 08:54:34 +0000 (09:54 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 5 Feb 2023 19:08:44 +0000 (20:08 +0100)
tpl/strings/strings.go
tpl/strings/strings_test.go

index a49451483a8ea6e7d022bf68222c9a9ed737b368..6c6e9b9d3fd04f1014586c7a34eb196930113167 100644 (file)
@@ -20,6 +20,7 @@ import (
        "html/template"
        "regexp"
        "strings"
+       "unicode"
        "unicode/utf8"
 
        "github.com/gohugoio/hugo/common/text"
@@ -160,6 +161,19 @@ func (ns *Namespace) ContainsAny(s, chars any) (bool, error) {
        return strings.ContainsAny(ss, sc), nil
 }
 
+// ContainsNonSpace reports whether s contains any non-space characters as defined
+// by Unicode's White Space property,
+func (ns *Namespace) ContainsNonSpace(s any) bool {
+       ss := cast.ToString(s)
+
+       for _, r := range ss {
+               if !unicode.IsSpace(r) {
+                       return true
+               }
+       }
+       return false
+}
+
 // HasPrefix tests whether the input s begins with prefix.
 func (ns *Namespace) HasPrefix(s, prefix any) (bool, error) {
        ss, err := cast.ToStringE(s)
index 7e3960934afad935162ee671bee2a40dc5010f4a..a230d4a486f4f00388aca499611bea0b11c9bbd5 100644 (file)
@@ -145,6 +145,27 @@ func TestContainsAny(t *testing.T) {
        }
 }
 
+func TestContainsNonSpace(t *testing.T) {
+       t.Parallel()
+       c := qt.New(t)
+
+       for _, test := range []struct {
+               s      any
+               expect bool
+       }{
+               {"", false},
+               {" ", false},
+               {"        ", false},
+               {"\t", false},
+               {"\r", false},
+               {"a", true},
+               {"    a", true},
+               {"a\n", true},
+       } {
+               c.Assert(ns.ContainsNonSpace(test.s), qt.Equals, test.expect)
+       }
+}
+
 func TestCountRunes(t *testing.T) {
        t.Parallel()
        c := qt.New(t)