mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-20 21:31:32 +02:00
Move the emoji parsing to pageparser
This avoids double parsing the page content when `enableEmoji=true`. This commit also adds some general improvements to the parser, making it in general much faster: ```bash benchmark old ns/op new ns/op delta BenchmarkShortcodeLexer-4 90258 101730 +12.71% BenchmarkParse-4 148940 15037 -89.90% benchmark old allocs new allocs delta BenchmarkShortcodeLexer-4 456 700 +53.51% BenchmarkParse-4 28 33 +17.86% benchmark old bytes new bytes delta BenchmarkShortcodeLexer-4 69875 81014 +15.94% BenchmarkParse-4 8128 8304 +2.17% ``` Running some site benchmarks with Emoji support turned on: ```bash benchmark old ns/op new ns/op delta BenchmarkSiteBuilding/TOML,num_langs=3,num_pages=5000,tags_per_page=5,shortcodes,render-4 924556797 818115620 -11.51% benchmark old allocs new allocs delta BenchmarkSiteBuilding/TOML,num_langs=3,num_pages=5000,tags_per_page=5,shortcodes,render-4 4112613 4133787 +0.51% benchmark old bytes new bytes delta BenchmarkSiteBuilding/TOML,num_langs=3,num_pages=5000,tags_per_page=5,shortcodes,render-4 426982864 424363832 -0.61% ``` Fixes #5534
This commit is contained in:
@@ -1497,6 +1497,45 @@ func TestChompBOM(t *testing.T) {
|
||||
checkPageTitle(t, p, "Simple")
|
||||
}
|
||||
|
||||
func TestPageWithEmoji(t *testing.T) {
|
||||
for _, enableEmoji := range []bool{true, false} {
|
||||
v := viper.New()
|
||||
v.Set("enableEmoji", enableEmoji)
|
||||
b := newTestSitesBuilder(t)
|
||||
b.WithViper(v)
|
||||
|
||||
b.WithSimpleConfigFile()
|
||||
|
||||
b.WithContent("page-emoji.md", `---
|
||||
title: "Hugo Smile"
|
||||
---
|
||||
This is a :smile:.
|
||||
<!--more-->
|
||||
|
||||
Another :smile: This is :not: an emoji.
|
||||
|
||||
`)
|
||||
|
||||
b.CreateSites().Build(BuildCfg{})
|
||||
|
||||
if enableEmoji {
|
||||
b.AssertFileContent("public/page-emoji/index.html",
|
||||
"This is a 😄",
|
||||
"Another 😄",
|
||||
"This is :not: an emoji",
|
||||
)
|
||||
} else {
|
||||
b.AssertFileContent("public/page-emoji/index.html",
|
||||
"This is a :smile:",
|
||||
"Another :smile:",
|
||||
"This is :not: an emoji",
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// https://github.com/gohugoio/hugo/issues/5381
|
||||
func TestPageManualSummary(t *testing.T) {
|
||||
b := newTestSitesBuilder(t)
|
||||
|
Reference in New Issue
Block a user