feat: add linkbreak in markdown decoder (#1090)
* feat: add linkbreak in markdown decoder * fix: markdown text
This commit is contained in:
parent
552f95fd15
commit
23618990b2
2 changed files with 10 additions and 0 deletions
|
|
@ -38,6 +38,7 @@ Document markdownToDocument(
|
|||
String documentToMarkdown(
|
||||
Document document, {
|
||||
List<NodeParser> customParsers = const [],
|
||||
String lineBreak = '',
|
||||
}) {
|
||||
return AppFlowyEditorMarkdownCodec(
|
||||
encodeParsers: [
|
||||
|
|
@ -53,6 +54,7 @@ String documentToMarkdown(
|
|||
const TableNodeParser(),
|
||||
const DividerNodeParser(),
|
||||
],
|
||||
lineBreak: lineBreak,
|
||||
).encode(document);
|
||||
}
|
||||
|
||||
|
|
@ -61,11 +63,13 @@ class AppFlowyEditorMarkdownCodec extends Codec<Document, String> {
|
|||
this.markdownInlineSyntaxes = const [],
|
||||
this.markdownParsers = const [],
|
||||
this.encodeParsers = const [],
|
||||
this.lineBreak = '',
|
||||
});
|
||||
|
||||
final List<NodeParser> encodeParsers;
|
||||
final List<CustomMarkdownParser> markdownParsers;
|
||||
final List<md.InlineSyntax> markdownInlineSyntaxes;
|
||||
final String lineBreak;
|
||||
|
||||
@override
|
||||
Converter<String, Document> get decoder => DocumentMarkdownDecoder(
|
||||
|
|
@ -76,5 +80,6 @@ class AppFlowyEditorMarkdownCodec extends Codec<Document, String> {
|
|||
@override
|
||||
Converter<Document, String> get encoder => DocumentMarkdownEncoder(
|
||||
parsers: encodeParsers,
|
||||
lineBreak: lineBreak,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ import 'package:collection/collection.dart';
|
|||
class DocumentMarkdownEncoder extends Converter<Document, String> {
|
||||
DocumentMarkdownEncoder({
|
||||
this.parsers = const [],
|
||||
this.lineBreak = '',
|
||||
});
|
||||
|
||||
final List<NodeParser> parsers;
|
||||
final String lineBreak;
|
||||
|
||||
@override
|
||||
String convert(Document input) {
|
||||
|
|
@ -19,6 +21,9 @@ class DocumentMarkdownEncoder extends Converter<Document, String> {
|
|||
);
|
||||
if (parser != null) {
|
||||
buffer.write(parser.transform(node, this));
|
||||
if (lineBreak.isNotEmpty && node.id != input.root.children.last.id) {
|
||||
buffer.write(lineBreak);
|
||||
}
|
||||
}
|
||||
}
|
||||
return buffer.toString();
|
||||
|
|
|
|||
Loading…
Reference in a new issue