diff --git a/source/app/metrics/utils.mjs b/source/app/metrics/utils.mjs index 21b5ba77..3e0f4ad6 100644 --- a/source/app/metrics/utils.mjs +++ b/source/app/metrics/utils.mjs @@ -288,8 +288,12 @@ export async function markdown(text, {mode = "inline", codelines = Infinity} = { //Trim code snippets rendered = rendered.replace(/(?)(?[\s\S]*?)(?<\/code>)/g, (m, open, code, close) => { //eslint-disable-line max-params const lines = code.trim().split("\n") - if ((lines.length > 1) && (!/class="[\s\S]*"/.test(open))) - open = open.replace(/>/g, ' class="language-multiline" xml:space="preserve">') + if (lines.length > 1) { + if (/class=".*language-[\s\S]+?.*"/.test(open)) + open = open.replace(/>/g, ` class="language-multiline ${open.match(/class="(?[\s\S]+)"/)?.groups.class}" xml:space="preserve">`) + else if (!/class="[\s\S]*"/.test(open)) + open = open.replace(/>/g, ' class="language-multiline" xml:space="preserve">') + } return `${open}${lines.slice(0, codelines).join("\n")}${lines.length > codelines ? `\n(${lines.length - codelines} more ${lines.length - codelines === 1 ? "line was" : "lines were"} trimmed)` : ""}${close}` }) return rendered