summaryrefslogtreecommitdiff
path: root/public
diff options
context:
space:
mode:
authorSheogorath2018-10-31 15:12:34 +0100
committerSheogorath2018-10-31 15:33:45 +0100
commitd188b3526ab45f989e09f2a1c1f6e7a7eacf1605 (patch)
treedffa59906b645158304e46ec864adb36829e98c6 /public
parent7e45533c75a3697c916e52e5f4ddff42a38bd3d5 (diff)
Again: Replace emoji-plugin regex
The Regex introduced in the last commit[1], was already working quite good. But still resulted in false positives for all URL that contained a second `:`. To fix this once and for all, we craft a simple, but long regex based on all emoji names and use this to match them. We could probably optimize it, but that should also be something the regex engine itself can and should do. [1]: 7e45533c75a3697c916e52e5f4ddff42a38bd3d5 (in this source tree) Signed-off-by: Sheogorath <sheogorath@shivering-isles.com>
Diffstat (limited to 'public')
-rw-r--r--public/js/extra.js13
1 files changed, 6 insertions, 7 deletions
diff --git a/public/js/extra.js b/public/js/extra.js
index 4db36ff6..ed1470be 100644
--- a/public/js/extra.js
+++ b/public/js/extra.js
@@ -1147,15 +1147,14 @@ const pdfPlugin = new Plugin(
const emojijsPlugin = new Plugin(
// regexp to match emoji shortcodes :something:
- /:([^\s:]+):/,
+ // We generate an universal regex that guaranteed only contains the
+ // emojies we have available. This should prevent all false-positives
+ new RegExp(':(' + window.emojify.emojiNames.map((item) => { return RegExp.escape(item) }).join('|') + '):', 'i'),
(match, utils) => {
- const emoji = match[1] ? match[1].toLowerCase() : undefined
- if (window.emojify.emojiNames.includes(emoji)) {
- const div = $(`<img class="emoji" src="${serverurl}/build/emojify.js/dist/images/basic/${emoji}.png"></img>`)
- return div[0].outerHTML
- }
- return match[0]
+ const emoji = match[1].toLowerCase()
+ const div = $(`<img class="emoji" src="${serverurl}/build/emojify.js/dist/images/basic/${emoji}.png"></img>`)
+ return div[0].outerHTML
}
)