feat: add linkbreak in markdown decoder (#1090)

* feat: add linkbreak in markdown decoder

* fix: markdown text
This commit is contained in:
Lucas 2025-04-16 15:14:24 +08:00 • committed by GitHub
commit 23618990b2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 0 deletions

View file

@ -38,6 +38,7 @@ Document markdownToDocument(
String documentToMarkdown( String documentToMarkdown(
Document document, { Document document, {
List<NodeParser> customParsers = const [], List<NodeParser> customParsers = const [],
String lineBreak = '',
}) { }) {
return AppFlowyEditorMarkdownCodec( return AppFlowyEditorMarkdownCodec(
encodeParsers: [ encodeParsers: [
@ -53,6 +54,7 @@ String documentToMarkdown(
const TableNodeParser(), const TableNodeParser(),
const DividerNodeParser(), const DividerNodeParser(),
], ],
lineBreak: lineBreak,
).encode(document); ).encode(document);
} }
@ -61,11 +63,13 @@ class AppFlowyEditorMarkdownCodec extends Codec<Document, String> {
this.markdownInlineSyntaxes = const [], this.markdownInlineSyntaxes = const [],
this.markdownParsers = const [], this.markdownParsers = const [],
this.encodeParsers = const [], this.encodeParsers = const [],
this.lineBreak = '',
}); });
final List<NodeParser> encodeParsers; final List<NodeParser> encodeParsers;
final List<CustomMarkdownParser> markdownParsers; final List<CustomMarkdownParser> markdownParsers;
final List<md.InlineSyntax> markdownInlineSyntaxes; final List<md.InlineSyntax> markdownInlineSyntaxes;
final String lineBreak;
@override @override
Converter<String, Document> get decoder => DocumentMarkdownDecoder( Converter<String, Document> get decoder => DocumentMarkdownDecoder(
@ -76,5 +80,6 @@ class AppFlowyEditorMarkdownCodec extends Codec<Document, String> {
@override @override
Converter<Document, String> get encoder => DocumentMarkdownEncoder( Converter<Document, String> get encoder => DocumentMarkdownEncoder(
parsers: encodeParsers, parsers: encodeParsers,
lineBreak: lineBreak,
); );
} }

View file

@ -6,9 +6,11 @@ import 'package:collection/collection.dart';
class DocumentMarkdownEncoder extends Converter<Document, String> { class DocumentMarkdownEncoder extends Converter<Document, String> {
DocumentMarkdownEncoder({ DocumentMarkdownEncoder({
this.parsers = const [], this.parsers = const [],
this.lineBreak = '',
}); });
final List<NodeParser> parsers; final List<NodeParser> parsers;
final String lineBreak;
@override @override
String convert(Document input) { String convert(Document input) {
@ -19,6 +21,9 @@ class DocumentMarkdownEncoder extends Converter<Document, String> {
); );
if (parser != null) { if (parser != null) {
buffer.write(parser.transform(node, this)); buffer.write(parser.transform(node, this));
if (lineBreak.isNotEmpty && node.id != input.root.children.last.id) {
buffer.write(lineBreak);
}
} }
} }
return buffer.toString(); return buffer.toString();