mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-29 22:29:56 +02:00
tpl: Modify tpl.humanize to ordinalize integer input
Add logic to tpl.humanize such that it understands input of int literals or strings which represent an integer. When tpl.humanize sees this type of input, it will use inflect.Ordinalize as opposed to the standard inflect.Humanize. Fixes #1886
This commit is contained in:
committed by
Bjørn Erik Pedersen
parent
330639d2ae
commit
0a812beb12
@@ -1696,8 +1696,12 @@ func countRunes(content interface{}) (int, error) {
|
||||
return counter, nil
|
||||
}
|
||||
|
||||
// humanize returns the humanized form of a single word.
|
||||
// humanize returns the humanized form of a single parameter.
|
||||
// If the parameter is either an integer or a string containing an integer
|
||||
// value, the behavior is to add the appropriate ordinal.
|
||||
// Example: "my-first-post" -> "My first post"
|
||||
// Example: "103" -> "103rd"
|
||||
// Example: 52 -> "52nd"
|
||||
func humanize(in interface{}) (string, error) {
|
||||
word, err := cast.ToStringE(in)
|
||||
if err != nil {
|
||||
@@ -1708,6 +1712,11 @@ func humanize(in interface{}) (string, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
_, ok := in.(int) // original param was literal int value
|
||||
_, err = strconv.Atoi(word) // original param was string containing an int value
|
||||
if ok == true || err == nil {
|
||||
return inflect.Ordinalize(word), nil
|
||||
}
|
||||
return inflect.Humanize(word), nil
|
||||
}
|
||||
|
||||
|
@@ -1801,11 +1801,16 @@ func TestHighlight(t *testing.T) {
|
||||
func TestInflect(t *testing.T) {
|
||||
for i, this := range []struct {
|
||||
inflectFunc func(i interface{}) (string, error)
|
||||
in string
|
||||
in interface{}
|
||||
expected string
|
||||
}{
|
||||
{humanize, "MyCamel", "My camel"},
|
||||
{humanize, "", ""},
|
||||
{humanize, "103", "103rd"},
|
||||
{humanize, "41", "41st"},
|
||||
{humanize, 103, "103rd"},
|
||||
{humanize, int64(92), "92nd"},
|
||||
{humanize, "5.5", "5.5"},
|
||||
{pluralize, "cat", "cats"},
|
||||
{pluralize, "", ""},
|
||||
{singularize, "cats", "cat"},
|
||||
|
Reference in New Issue
Block a user