From e16deb0f52780621d2cfb589562db5ea19581ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Tue, 9 Jul 2019 10:53:26 +0200 Subject: [PATCH] Keep checkboxes as plain text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- src/EditorFactory.js | 14 ++++++++++---- src/tests/markdown.spec.js | 5 +++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/EditorFactory.js b/src/EditorFactory.js index ec9a8835e5..e0cbd3206b 100644 --- a/src/EditorFactory.js +++ b/src/EditorFactory.js @@ -120,10 +120,16 @@ const createMarkdownSerializer = (_nodes, _marks) => { ...items, [name]: toMarkdown }), {}) - return new MarkdownSerializer( - { ...defaultMarkdownSerializer.nodes, ...nodes }, - { ...defaultMarkdownSerializer.marks, ...marks } - ) + return { + serializer: new MarkdownSerializer( + { ...defaultMarkdownSerializer.nodes, ...nodes }, + { ...defaultMarkdownSerializer.marks, ...marks } + ), + serialize: function(content, options) { + return this.serializer.serialize(content, options).split('\\[ \\]').join('[ ]') + .split('\\[x\\]').join('[x]') + } + } } const serializePlainText = (tiptap) => { diff --git a/src/tests/markdown.spec.js b/src/tests/markdown.spec.js index cf011929b7..83ed81c5d9 100644 --- a/src/tests/markdown.spec.js +++ b/src/tests/markdown.spec.js @@ -78,6 +78,11 @@ describe('Markdown though editor', () => { test('special characters', () => { expect(markdownThroughEditor('"\';&.-#><')).toBe('"\';&.-#><') }) + test('checkboxes', () => { + expect(markdownThroughEditor('- [ ] [asd](sdf)')).toBe('* [ ] [asd](sdf)') + expect(markdownThroughEditor('- [x] [asd](sdf)')).toBe('* [x] [asd](sdf)') + expect(markdownThroughEditor('- [ [asd](sdf)')).toBe('* \\[ [asd](sdf)') + }) }) describe('Markdown serializer from html', () => {