fix(app/utils): indent for code block with languages hightlighting (#755) [skip ci]

This commit is contained in:
Simon Lecoq
2022-01-09 19:54:17 +01:00
committed by GitHub
parent b00a59fb1b
commit fa17bb48bd

View File

@@ -288,8 +288,12 @@ export async function markdown(text, {mode = "inline", codelines = Infinity} = {
//Trim code snippets //Trim code snippets
rendered = rendered.replace(/(?<open><code[\s\S]*?>)(?<code>[\s\S]*?)(?<close><\/code>)/g, (m, open, code, close) => { //eslint-disable-line max-params rendered = rendered.replace(/(?<open><code[\s\S]*?>)(?<code>[\s\S]*?)(?<close><\/code>)/g, (m, open, code, close) => { //eslint-disable-line max-params
const lines = code.trim().split("\n") const lines = code.trim().split("\n")
if ((lines.length > 1) && (!/class="[\s\S]*"/.test(open))) if (lines.length > 1) {
open = open.replace(/>/g, ' class="language-multiline" xml:space="preserve">') if (/class=".*language-[\s\S]+?.*"/.test(open))
open = open.replace(/>/g, ` class="language-multiline ${open.match(/class="(?<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<span class="token trimmed">(${lines.length - codelines} more ${lines.length - codelines === 1 ? "line was" : "lines were"} trimmed)</span>` : ""}${close}` return `${open}${lines.slice(0, codelines).join("\n")}${lines.length > codelines ? `\n<span class="token trimmed">(${lines.length - codelines} more ${lines.length - codelines === 1 ? "line was" : "lines were"} trimmed)</span>` : ""}${close}`
}) })
return rendered return rendered