Merge pull request #4008 from BobVul/fix-markdown-escapes

Fix escaped markdown passing backslashes through
This commit is contained in:
Bruno Windels 2020-02-14 09:18:53 +00:00 committed by GitHub
commit 43f15ab47d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 0 deletions

View File

@ -41,6 +41,14 @@ export function htmlSerializeIfNeeded(model, {forceHTML = false} = {}) {
if (!parser.isPlainText() || forceHTML) { if (!parser.isPlainText() || forceHTML) {
return parser.toHTML(); return parser.toHTML();
} }
// Format "plain" text to ensure removal of backslash escapes
// https://github.com/vector-im/riot-web/issues/11230
// https://github.com/vector-im/riot-web/issues/2870
const postParsePlaintext = parser.toPlaintext();
if (postParsePlaintext !== md) {
// only return "formatted" text if it differs from the source text
return postParsePlaintext;
}
} }
export function textSerialize(model) { export function textSerialize(model) {

View File

@ -43,4 +43,10 @@ describe('editor/serialize', function() {
const html = htmlSerializeIfNeeded(model, {}); const html = htmlSerializeIfNeeded(model, {});
expect(html).toBe("<em>hello</em> world"); expect(html).toBe("<em>hello</em> world");
}); });
it('escaped markdown should not retain backslashes', function() {
const pc = createPartCreator();
const model = new EditorModel([pc.plain('\\*hello\\* world')]);
const html = htmlSerializeIfNeeded(model, {});
expect(html).toBe('*hello* world');
});
}); });