diff options
author | Ferdinand Thiessen <rpm@fthiessen.de> | 2022-10-28 13:27:11 +0300 |
---|---|---|
committer | Jonas <jonas@freesources.org> | 2022-10-31 12:57:00 +0300 |
commit | b33ea7546a92391e94bff36f3dce2866748834b1 (patch) | |
tree | 947df4b5ee57049b62eff078b1ecfe52a8248dde | |
parent | 4266d1c098a58d89d5ee97772149c4cedfc78cd3 (diff) |
Fix code blocks loosing the language hint on serialization
`prosemirror-markdown` uses `params` attribute for the language hint
whereas `tiptap` uses the `language` attribute.
Signed-off-by: Ferdinand Thiessen <rpm@fthiessen.de>
-rw-r--r-- | src/extensions/Markdown.js | 4 | ||||
-rw-r--r-- | src/extensions/RichText.js | 2 | ||||
-rw-r--r-- | src/nodes/CodeBlock.js | 14 | ||||
-rw-r--r-- | src/tests/markdown.spec.js | 2 |
4 files changed, 19 insertions, 3 deletions
diff --git a/src/extensions/Markdown.js b/src/extensions/Markdown.js index 8b742fa88..687e9b75a 100644 --- a/src/extensions/Markdown.js +++ b/src/extensions/Markdown.js @@ -1,9 +1,9 @@ -/* +/** * @copyright Copyright (c) 2022 Max <max@nextcloud.com> * * @author Max <max@nextcloud.com> * - * @license GNU AGPL version 3 or any later version + * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as diff --git a/src/extensions/RichText.js b/src/extensions/RichText.js index 12454be39..c19d09bc8 100644 --- a/src/extensions/RichText.js +++ b/src/extensions/RichText.js @@ -28,7 +28,7 @@ import BulletList from './../nodes/BulletList.js' import Callout from './../nodes/Callouts.js' import CharacterCount from '@tiptap/extension-character-count' import Code from '@tiptap/extension-code' -import CodeBlock from '@tiptap/extension-code-block' +import CodeBlock from './../nodes/CodeBlock.js' import Document from '@tiptap/extension-document' import Dropcursor from '@tiptap/extension-dropcursor' import FrontMatter from './../nodes/FrontMatter.js' diff --git a/src/nodes/CodeBlock.js b/src/nodes/CodeBlock.js new file mode 100644 index 000000000..f6d79c68b --- /dev/null +++ b/src/nodes/CodeBlock.js @@ -0,0 +1,14 @@ +import TiptapCodeBlock from '@tiptap/extension-code-block' +import { defaultMarkdownSerializer } from 'prosemirror-markdown' + +const CodeBlock = TiptapCodeBlock.extend({ + + toMarkdown(state, node, parent, index) { + // prosemirror-markdown uses `params` instead of `language` attribute + node.attrs.params = node.attrs.language + return defaultMarkdownSerializer.nodes.code_block(state, node, parent, index) + }, + +}) + +export default CodeBlock diff --git a/src/tests/markdown.spec.js b/src/tests/markdown.spec.js index ec8a30e55..0194ea739 100644 --- a/src/tests/markdown.spec.js +++ b/src/tests/markdown.spec.js @@ -101,6 +101,8 @@ describe('Markdown though editor', () => { }) test('code block', () => { expect(markdownThroughEditor('```\n<?php echo "Hello World";\n```')).toBe('```\n<?php echo "Hello World";\n```') + // Issue #3328 + expect(markdownThroughEditor('```python\nprint("Hello World")\n```')).toBe('```python\nprint("Hello World")\n```') }) test('markdown untouched', () => { // Issue #2703 |