hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 812688fc2f3e220ac35cad9f0445a2548f0cc603
parent a2670bf460e10ed5de69f90abbe7c4e2b32068cf
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Thu, 14 Nov 2019 09:57:37 +0100

hugolib: Fix emoji handling inside shortcodes

Fixes #6504

Diffstat:
Mhugolib/shortcode.go | 11+++++++++++
Mhugolib/shortcode_test.go | 27+++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/hugolib/shortcode.go b/hugolib/shortcode.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()
diff --git a/hugolib/shortcode_test.go b/hugolib/shortcode_test.go
@@ -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)