Dart Markdown 包,如何处理新行
Dart Markdown package, how to handle new lines
我正在尝试制作一个所见即所得的内部工具。我们决定用 contentEditable 来实现这个特性。但是,我们将数据以降价保存到我们的数据库中。所以我必须能够从 html 解析到 md 并返回。对于 html 到 md 我使用 package html2md 并且相反我使用 Markdown package.
我一直遇到的问题是,当你给我的编辑器写信时,像
HEY
After many lines some text
它在 md
中产生这个
HEY
After many lines some text
值得注意的是,它使用了 2 个空格和 2 个 LF 字符(或者至少我认为是这样,但我可能有点不对。)我通过这样解析解决了这个问题
markdownToHtml(data.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>'), inlineSyntaxes: [TextSyntax(String.fromCharCodes([32,32,10,10]),sub: "<div><br></div>")],inlineOnly: true );
内联唯一参数是必要的,因为如果没有它,文本语法由于某种原因无法应用。然而,当我试图实现无序列表的解析时,这个内联才把我咬了一口,这些列表被解析为块。所以我需要一种方法来正确解析这些空行,而无需仅使用内联。
class EmptyLineBlockSyntax extends BlockSyntax{
RegExp get pattern => RegExp(r'^(?:[ \t][ \t]+)$');
const EmptyLineBlockSyntax();
Node parse(BlockParser parser) {
parser.encounteredBlankLine = true;
parser.advance();
return Element('p',[Element.empty('br')]);
}
}
return markdownToHtml(data.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>'), blockSyntaxes: [EmptyLineBlockSyntax()]);
我正在尝试制作一个所见即所得的内部工具。我们决定用 contentEditable 来实现这个特性。但是,我们将数据以降价保存到我们的数据库中。所以我必须能够从 html 解析到 md 并返回。对于 html 到 md 我使用 package html2md 并且相反我使用 Markdown package.
我一直遇到的问题是,当你给我的编辑器写信时,像
HEY
After many lines some text
它在 md
中产生这个HEY
After many lines some text
值得注意的是,它使用了 2 个空格和 2 个 LF 字符(或者至少我认为是这样,但我可能有点不对。)我通过这样解析解决了这个问题
markdownToHtml(data.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>'), inlineSyntaxes: [TextSyntax(String.fromCharCodes([32,32,10,10]),sub: "<div><br></div>")],inlineOnly: true );
内联唯一参数是必要的,因为如果没有它,文本语法由于某种原因无法应用。然而,当我试图实现无序列表的解析时,这个内联才把我咬了一口,这些列表被解析为块。所以我需要一种方法来正确解析这些空行,而无需仅使用内联。
class EmptyLineBlockSyntax extends BlockSyntax{
RegExp get pattern => RegExp(r'^(?:[ \t][ \t]+)$');
const EmptyLineBlockSyntax();
Node parse(BlockParser parser) {
parser.encounteredBlankLine = true;
parser.advance();
return Element('p',[Element.empty('br')]);
}
}
return markdownToHtml(data.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>'), blockSyntaxes: [EmptyLineBlockSyntax()]);