diff --git a/packages/backend/src/core/MfmService.ts b/packages/backend/src/core/MfmService.ts index adea0c467d..57a1ae5c08 100644 --- a/packages/backend/src/core/MfmService.ts +++ b/packages/backend/src/core/MfmService.ts @@ -72,12 +72,17 @@ export class MfmService { return; } - switch (node.tagName) { - case 'br': { - text += '\n'; - break; - } + if (node.tagName === 'br') { + text += '\n'; + return; + } + // Don't produce invalid empty MFM + if (node.childNodes.length < 1) { + return; + } + + switch (node.tagName) { case 'a': { const txt = getText(node); const rel = node.attribs.rel; @@ -127,60 +132,48 @@ export class MfmService { } case 'h1': { - if (node.childNodes.length > 0) { - text += '**【'; - appendChildren(node.childNodes); - text += '】**\n'; - } + text += '**【'; + appendChildren(node.childNodes); + text += '】**\n'; break; } case 'h2': case 'h3': { - if (node.childNodes.length > 0) { - text += '**'; - appendChildren(node.childNodes); - text += '**\n'; - } + text += '**'; + appendChildren(node.childNodes); + text += '**\n'; break; } case 'b': case 'strong': { - if (node.childNodes.length > 0) { - text += '**'; - appendChildren(node.childNodes); - text += '**'; - } + text += '**'; + appendChildren(node.childNodes); + text += '**'; break; } case 'small': { - if (node.childNodes.length > 0) { - text += ''; - appendChildren(node.childNodes); - text += ''; - } + text += ''; + appendChildren(node.childNodes); + text += ''; break; } case 's': case 'del': { - if (node.childNodes.length > 0) { - text += '~~'; - appendChildren(node.childNodes); - text += '~~'; - } + text += '~~'; + appendChildren(node.childNodes); + text += '~~'; break; } case 'i': case 'em': { - if (node.childNodes.length > 0) { - text += ''; - appendChildren(node.childNodes); - text += ''; - } + text += ''; + appendChildren(node.childNodes); + text += ''; break; } @@ -235,11 +228,9 @@ export class MfmService { // inline code () case 'code': { - if (node.childNodes.length > 0) { - text += '`'; - appendChildren(node.childNodes); - text += '`'; - } + text += '`'; + appendChildren(node.childNodes); + text += '`'; break; } @@ -256,10 +247,8 @@ export class MfmService { case 'h4': case 'h5': case 'h6': { - if (node.childNodes.length > 0) { - text += '\n\n'; - appendChildren(node.childNodes); - } + text += '\n\n'; + appendChildren(node.childNodes); break; } @@ -271,10 +260,8 @@ export class MfmService { case 'li': case 'dt': case 'dd': { - if (node.childNodes.length > 0) { - text += '\n'; - appendChildren(node.childNodes); - } + text += '\n'; + appendChildren(node.childNodes); break; }