Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tpl
diff options
context:
space:
mode:
authorMichael Orr <michael@orr.co>2016-07-13 23:09:59 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-07-13 23:09:59 +0300
commit0a812beb120620ad2bdc8b1504bb7edf6eaac18a (patch)
tree644521a9c2200860b3d36887711b473c26f27f2c /tpl
parent330639d2aefbcaef4106653617fe8b518eb0711e (diff)
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
Diffstat (limited to 'tpl')
-rw-r--r--tpl/template_funcs.go11
-rw-r--r--tpl/template_funcs_test.go7
2 files changed, 16 insertions, 2 deletions
diff --git a/tpl/template_funcs.go b/tpl/template_funcs.go
index b34300ab2..b8896a9cd 100644
--- a/tpl/template_funcs.go
+++ b/tpl/template_funcs.go
@@ -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
}
diff --git a/tpl/template_funcs_test.go b/tpl/template_funcs_test.go
index f0d123c0f..1dcae066c 100644
--- a/tpl/template_funcs_test.go
+++ b/tpl/template_funcs_test.go
@@ -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"},