summaryrefslogtreecommitdiffhomepage
path: root/helpers
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2018-12-17 21:03:23 +0100
committerBjørn Erik Pedersen <[email protected]>2018-12-20 20:08:01 +0100
commit9cd54cab20a03475e34ca462bd943069111481ae (patch)
tree826eee0dbe8e7831ead2ace3b788286d1122fddd /helpers
parenta8853f1c5ace30ae8d256ad374bdb280c95d4228 (diff)
downloadhugo-9cd54cab20a03475e34ca462bd943069111481ae.tar.gz
hugo-9cd54cab20a03475e34ca462bd943069111481ae.zip
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
Diffstat (limited to 'helpers')
-rw-r--r--helpers/emoji.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/helpers/emoji.go b/helpers/emoji.go
index 31cd29deb..a6786c005 100644
--- a/helpers/emoji.go
+++ b/helpers/emoji.go
@@ -30,6 +30,12 @@ var (
emojiMaxSize int
)
+// Emoji returns the emojy given a key, e.g. ":smile:", nil if not found.
+func Emoji(key string) []byte {
+ emojiInit.Do(initEmoji)
+ return emojis[key]
+}
+
// Emojify "emojifies" the input source.
// Note that the input byte slice will be modified if needed.
// See http://www.emoji-cheat-sheet.com/