Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFerdinand Thiessen <rpm@fthiessen.de>2022-10-28 13:27:11 +0300
committerJonas <jonas@freesources.org>2022-10-31 12:57:00 +0300
commitb33ea7546a92391e94bff36f3dce2866748834b1 (patch)
tree947df4b5ee57049b62eff078b1ecfe52a8248dde
parent4266d1c098a58d89d5ee97772149c4cedfc78cd3 (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.js4
-rw-r--r--src/extensions/RichText.js2
-rw-r--r--src/nodes/CodeBlock.js14
-rw-r--r--src/tests/markdown.spec.js2
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