Skip to content

Commit 21aec01

Browse files
committed
fix: Ignore emoji shorthand codes in URIs
Fixes: docsifyjs#1823
1 parent 682bf96 commit 21aec01

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

src/core/render/emojify.js

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ export function emojify(text, useNativeEmoji) {
3535
)
3636
// Mark colons in comments
3737
.replace(/<!--[\s\S]+?-->/g, m => m.replace(/:/g, '__colon__'))
38+
// Mark colons in URIs
39+
.replace(/[a-z]{2,}:\/\/[^\s]+/gi, m => m.replace(/:/g, '__colon__'))
3840
// Replace emoji shorthand codes
3941
.replace(/:([a-z0-9_\-+]+?):/g, (m, $1) =>
4042
replaceEmojiShorthand(m, $1, useNativeEmoji)

test/integration/__snapshots__/emoji.test.js.snap

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
exports[`Emoji Ignores all emoji shorthand codes (noEmoji:true) 1`] = `"<p>:smile:</p><p>:smile::smile:</p><p>:smile: :smile:</p><p>:smile::smile::smile:</p><p>:smile: :smile: :smile:</p><p>text:smile:</p><p>:smile:text</p><p>text:smile:text</p>"`;
44

5+
exports[`Emoji Ignores emoji shorthand codes in URIs 1`] = `"<p>Url <a href=\\"https://docsify.js.org/:foo:/\\" target=\\"_blank\\" rel=\\"noopener\\">https://docsify.js.org/:foo:/</a> <a href=\\"http://docsify.js.org/:100:/\\" target=\\"_blank\\" rel=\\"noopener\\">http://docsify.js.org/:100:/</a> <a href=\\"ftp://docsify.js.org/:smile:/\\" target=\\"_blank\\" rel=\\"noopener\\">ftp://docsify.js.org/:smile:/</a></p>"`;
6+
57
exports[`Emoji Ignores emoji shorthand codes in code, pre, script, and template tags 1`] = `
68
"<pre>:100:</pre>
79

test/integration/emoji.test.js

+14
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,20 @@ describe('Emoji', function () {
107107
expect(mainElm.innerHTML).toMatchSnapshot();
108108
});
109109

110+
test('Ignores emoji shorthand codes in URIs', async () => {
111+
await docsifyInit({
112+
markdown: {
113+
homepage:
114+
'Url https://docsify.js.org/:foo:/ http://docsify.js.org/:100:/ ftp://docsify.js.org/:smile:/',
115+
},
116+
// _logHTML: true,
117+
});
118+
119+
const mainElm = document.querySelector('#main');
120+
121+
expect(mainElm.innerHTML).toMatchSnapshot();
122+
});
123+
110124
test('Ignores emoji shorthand codes in code, pre, script, and template tags', async () => {
111125
await docsifyInit({
112126
markdown: {

0 commit comments

Comments
 (0)