Skip to content

Commit 52d65c4

Browse files
authored
Merge pull request #1540 from LucasXu0/missing_code_block_markdown
fix: add missing markdown converter for code block and divider
2 parents 64ee314 + 114968f commit 52d65c4

File tree

6 files changed

+35
-2
lines changed

6 files changed

+35
-2
lines changed

frontend/app_flowy/packages/appflowy_editor/lib/src/plugins/markdown/decoder/document_markdown_decoder.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ class DocumentMarkdownDecoder extends Converter<String, Document> {
8080
BuiltInAttributeKey.subtype: BuiltInAttributeKey.quote,
8181
},
8282
);
83+
} else if (text.isNotEmpty && RegExp(r'^-*').stringMatch(text) == text) {
84+
return Node(type: 'divider');
8385
}
8486

8587
if (text.isNotEmpty) {

frontend/app_flowy/packages/appflowy_editor/lib/src/plugins/markdown/encoder/document_markdown_encoder.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:convert';
22

33
import 'package:appflowy_editor/src/core/document/document.dart';
4+
import 'package:appflowy_editor/src/plugins/markdown/encoder/parser/divider_node_parser.dart';
45
import 'package:appflowy_editor/src/plugins/markdown/encoder/parser/image_node_parser.dart';
56
import 'package:appflowy_editor/src/plugins/markdown/encoder/parser/node_parser.dart';
67
import 'package:appflowy_editor/src/plugins/markdown/encoder/parser/text_node_parser.dart';
@@ -10,6 +11,7 @@ class DocumentMarkdownEncoder extends Converter<Document, String> {
1011
this.parsers = const [
1112
TextNodeParser(),
1213
ImageNodeParser(),
14+
DividerNodeParser(),
1315
],
1416
});
1517

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import 'package:appflowy_editor/src/core/document/node.dart';
2+
import 'package:appflowy_editor/src/plugins/markdown/encoder/parser/node_parser.dart';
3+
4+
class DividerNodeParser extends NodeParser {
5+
const DividerNodeParser();
6+
7+
@override
8+
String get id => 'divider';
9+
10+
@override
11+
String transform(Node node) {
12+
return '---\n';
13+
}
14+
}

frontend/app_flowy/packages/appflowy_editor/lib/src/plugins/markdown/encoder/parser/text_node_parser.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class TextNodeParser extends NodeParser {
4040
}
4141
} else if (subtype == 'quote') {
4242
result = '> $markdown';
43-
} else if (subtype == 'code-block') {
43+
} else if (subtype == 'code_block') {
4444
result = '```\n$markdown\n```';
4545
} else if (subtype == 'bulleted-list') {
4646
result = '* $markdown';
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import 'package:appflowy_editor/appflowy_editor.dart';
2+
import 'package:appflowy_editor/src/plugins/markdown/encoder/parser/divider_node_parser.dart';
3+
import 'package:flutter_test/flutter_test.dart';
4+
5+
void main() async {
6+
group('divider_node_parser.dart', () {
7+
test('parser divider node', () {
8+
final node = Node(
9+
type: 'divider',
10+
);
11+
final result = const DividerNodeParser().transform(node);
12+
expect(result, '---\n');
13+
});
14+
});
15+
}

frontend/app_flowy/packages/appflowy_editor/test/plugins/markdown/encoder/parser/text_node_parser_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ void main() async {
8686
final node = TextNode(
8787
delta: Delta(operations: [TextInsert(text)]),
8888
attributes: {
89-
BuiltInAttributeKey.subtype: 'code-block',
89+
BuiltInAttributeKey.subtype: 'code_block',
9090
},
9191
);
9292
expect(const TextNodeParser().transform(node), '```\n$text\n```');

0 commit comments

Comments
 (0)