refactor: Improve linebreak logic for html messages
This commit is contained in:
parent
41a9fbc76b
commit
2d3bfa64a7
|
|
@ -212,7 +212,7 @@ String markdown(
|
|||
bool convertLinebreaks = true,
|
||||
}) {
|
||||
var ret = markdownToHtml(
|
||||
text,
|
||||
text.replaceNewlines(),
|
||||
extensionSet: ExtensionSet.commonMark,
|
||||
blockSyntaxes: [
|
||||
BlockLatexSyntax(),
|
||||
|
|
@ -270,6 +270,18 @@ String markdown(
|
|||
}
|
||||
|
||||
extension on String {
|
||||
String replaceNewlines() {
|
||||
// RegEx for at least 3 following \n
|
||||
final regExp = RegExp(r'(\n{3,})');
|
||||
|
||||
return replaceAllMapped(regExp, (match) {
|
||||
final newLineGroup = match.group(0)!;
|
||||
return newLineGroup
|
||||
.replaceAll('\n', '<br/>')
|
||||
.replaceFirst('<br/><br/>', '\n\n');
|
||||
});
|
||||
}
|
||||
|
||||
String convertLinebreaksToBr(
|
||||
String tagName, {
|
||||
bool exclude = false,
|
||||
|
|
|
|||
|
|
@ -70,14 +70,29 @@ void main() {
|
|||
'Snape killed <span data-mx-spoiler="">Dumbledoor <strong>bold</strong></span>',
|
||||
);
|
||||
});
|
||||
test('multiple paragraphs', () {
|
||||
test('linebreaks', () {
|
||||
expect(markdown('Heya!\nBeep'), 'Heya!<br/>Beep');
|
||||
expect(markdown('Heya!\n\nBeep'), '<p>Heya!</p><p>Beep</p>');
|
||||
expect(markdown('Heya!\n\n\nBeep'), '<p>Heya!</p><p><br/>Beep</p>');
|
||||
expect(
|
||||
markdown('Heya!\n\n\n\nBeep'),
|
||||
'<p>Heya!</p><p><br/><br/>Beep</p>',
|
||||
);
|
||||
expect(
|
||||
markdown('Heya!\n\n\n\nBeep\n\n'),
|
||||
'<p>Heya!</p><p><br/><br/>Beep</p>',
|
||||
);
|
||||
expect(
|
||||
markdown('\n\nHeya!\n\n\n\nBeep'),
|
||||
'<p>Heya!</p><p><br/><br/>Beep</p>',
|
||||
);
|
||||
expect(
|
||||
markdown('\n\nHeya!\n\n\n\nBeep\n '),
|
||||
'<p>Heya!</p><p><br/><br/>Beep</p>',
|
||||
);
|
||||
});
|
||||
test('Other block elements', () {
|
||||
expect(markdown('# blah\n\nblubb'), '<h1>blah</h1><p>blubb</p>');
|
||||
});
|
||||
test('linebreaks', () {
|
||||
expect(markdown('foxies\ncute'), 'foxies<br/>cute');
|
||||
expect(markdown('# blah\n\nblubb'), '<h1>blah</h1><p><br/>blubb</p>');
|
||||
});
|
||||
test('lists', () {
|
||||
expect(
|
||||
|
|
|
|||
Loading…
Reference in New Issue