Skip to content
Permalink
Browse files

hugolib: Fix emoji handling inside shortcodes

Fixes #6504
  • Loading branch information
bep committed Nov 14, 2019
1 parent a2670bf commit 812688fc2f3e220ac35cad9f0445a2548f0cc603
Showing with 38 additions and 0 deletions.
  1. +11 −0 hugolib/shortcode.go
  2. +27 −0 hugolib/shortcode_test.go
@@ -18,6 +18,8 @@ import (
"fmt"
"strconv"

"github.com/gohugoio/hugo/helpers"

"html/template"
"path"

@@ -517,6 +519,15 @@ Loop:
return sc, nil
case currItem.IsText():
sc.inner = append(sc.inner, currItem.ValStr())
case currItem.Type == pageparser.TypeEmoji:
// TODO(bep) avoid the duplication of these "text cases", to prevent
// more of #6504 in the future.
val := currItem.ValStr()
if emoji := helpers.Emoji(val); emoji != nil {
sc.inner = append(sc.inner, string(emoji))
} else {
sc.inner = append(sc.inner, val)
}
case currItem.IsShortcodeName():

sc.name = currItem.ValStr()
@@ -1171,6 +1171,33 @@ title: "Hugo Rocks!"
)
}

// https://github.com/gohugoio/hugo/issues/6504
func TestShortcodeEmoji(t *testing.T) {
t.Parallel()

v := viper.New()
v.Set("enableEmoji", true)

builder := newTestSitesBuilder(t).WithViper(v)

builder.WithContent("page.md", `---
title: "Hugo Rocks!"
---
# doc
{{< event >}}10:30-11:00 My :smile: Event {{< /event >}}
`).WithTemplatesAdded(
"layouts/shortcodes/event.html", `<div>{{ "\u29BE" }} {{ .Inner }} </div>`)

builder.Build(BuildCfg{})
builder.AssertFileContent("public/page/index.html",
"⦾ 10:30-11:00 My 😄 Event",
)
}

func TestShortcodeTypedParams(t *testing.T) {
t.Parallel()
c := qt.New(t)

0 comments on commit 812688f

Please sign in to comment.
You can’t perform that action at this time.