fix: document from markdown contains html escaped text (#841)

This commit is contained in:
Lucas.Xu 2024-07-11 18:01:24 +08:00 • committed by GitHub
commit e0d673afbb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 49 additions and 3 deletions

View file

@ -40,12 +40,10 @@ class MarkdownCodeBlockParserV2 extends CustomMarkdownParser {
language = languageClass.substring('language-'.length); language = languageClass.substring('language-'.length);
} }
final deltaDecoder = DeltaMarkdownDecoder();
return [ return [
codeBlockNode( codeBlockNode(
language: language, language: language,
delta: deltaDecoder.convertNodes(code.children), delta: Delta()..insert(code.textContent.trimRight()),
), ),
]; ];
} }

View file

@ -0,0 +1,47 @@
import 'package:appflowy_editor/src/plugins/markdown/decoder/document_markdown_decoder.dart';
import 'package:example/pages/markdown/markdown_code_block_parser.dart';
import 'package:flutter_test/flutter_test.dart';
void main() async {
group('markdown_heading_parser.dart', () {
final parser = DocumentMarkdownDecoder(
markdownElementParsers: [
const MarkdownCodeBlockParserV2(),
],
);
test('contains quote syntax', () {
const codeBlockMarkdown = '''```python
# Example of using the GTD class
gtd_system = GTD()
gtd_system.capture("Write a blog post")
gtd_system.capture("Prepare presentation for Monday")
gtd_system.capture("Plan vacation")
gtd_system.clarify()
gtd_system.review()
gtd_system.engage()
```''';
final result = parser.convert(codeBlockMarkdown);
final codeBlock = result.root.children.first;
expect(codeBlock.toJson(), {
'type': 'code',
'data': {
'language': 'python',
'delta': [
{
'insert': '''# Example of using the GTD class
gtd_system = GTD()
gtd_system.capture("Write a blog post")
gtd_system.capture("Prepare presentation for Monday")
gtd_system.capture("Plan vacation")
gtd_system.clarify()
gtd_system.review()
gtd_system.engage()''',
},
],
},
});
});
});
}

View file

@ -22,6 +22,7 @@ class DocumentMarkdownDecoder extends Converter<String, Document> {
...inlineSyntaxes, ...inlineSyntaxes,
UnderlineInlineSyntax(), UnderlineInlineSyntax(),
], ],
encodeHtml: false,
).parse(input); ).parse(input);
final document = Document.blank(); final document = Document.blank();