FIX: Do not autocomplete categories or emojis in code blocks (#8433)

Emojis and category autocomplete show up often when writing code
snippets, which makes it easy to insert unwanted text by mistake.
This commit is contained in:
Dan Ungureanu
2019-12-02 18:48:40 +02:00
committed by GitHub
parent 5df719a3c2
commit b643526d9a
4 changed files with 114 additions and 9 deletions

View File

@ -9,7 +9,9 @@ import {
setDefaultHomepage,
caretRowCol,
setCaretPosition,
fillMissingDates
fillMissingDates,
getCodeBlocks,
inCodeBlock
} from "discourse/lib/utilities";
QUnit.module("lib:utilities");
@ -186,3 +188,50 @@ QUnit.test("fillMissingDates", assert => {
"it returns a JSON array with 31 dates"
);
});
QUnit.test("getCodeBlocks - works with [code]", assert => {
assert.deepEqual(
getCodeBlocks("[code]\nfoo\n[/code]\n\nbar\n\n[code]\nbaz"),
[
[0, 18],
[25, 35]
]
);
});
QUnit.test("getCodeBlocks - works with backticks", assert => {
assert.deepEqual(getCodeBlocks("foo `bar\nbar`! `baz"), [
[4, 13],
[15, 19]
]);
});
QUnit.test("getCodeBlocks - works with triple backticks", assert => {
assert.deepEqual(getCodeBlocks("```\nfoo\n```\n\nbar\n\n```\nbaz"), [
[0, 11],
[18, 25]
]);
});
QUnit.test("inCodeBlock", assert => {
const raw =
"bar\n\n```\nfoo\n```\n\nbar\n\n`foo\nfoo`\n\nbar\n\n[code]\nfoo\n[/code]\n\nbar`foo";
assert.notOk(inCodeBlock(raw, 4));
assert.ok(inCodeBlock(raw, 5));
assert.ok(inCodeBlock(raw, 16));
assert.notOk(inCodeBlock(raw, 17));
assert.notOk(inCodeBlock(raw, 22));
assert.ok(inCodeBlock(raw, 23));
assert.ok(inCodeBlock(raw, 32));
assert.notOk(inCodeBlock(raw, 33));
assert.notOk(inCodeBlock(raw, 38));
assert.ok(inCodeBlock(raw, 39));
assert.ok(inCodeBlock(raw, 57));
assert.notOk(inCodeBlock(raw, 58));
assert.notOk(inCodeBlock(raw, 61));
assert.ok(inCodeBlock(raw, 62));
});