tpl/strings: Add strings.Count

Fixes #7453
This commit is contained in:
Bjørn Erik Pedersen
2020-07-03 10:34:40 +02:00
parent e9f87c4e3f
commit 028b356787
2 changed files with 22 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ import (
"errors"
"fmt"
"html/template"
"strings"
_strings "strings"
"unicode/utf8"
@@ -90,6 +91,20 @@ func (ns *Namespace) CountWords(s interface{}) (int, error) {
return counter, nil
}
// Count counts the number of non-overlapping instances of substr in s.
// If substr is an empty string, Count returns 1 + the number of Unicode code points in s.
func (ns *Namespace) Count(substr, s interface{}) (int, error) {
substrs, err := cast.ToStringE(substr)
if err != nil {
return 0, _errors.Wrap(err, "Failed to convert substr to string")
}
ss, err := cast.ToStringE(s)
if err != nil {
return 0, _errors.Wrap(err, "Failed to convert s to string")
}
return strings.Count(ss, substrs), nil
}
// Chomp returns a copy of s with all trailing newline characters removed.
func (ns *Namespace) Chomp(s interface{}) (interface{}, error) {
ss, err := cast.ToStringE(s)