From 5d5b4ff381de4a094a9777c92d0becd9721386b9 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 30 Sep 2024 14:44:51 -0400 Subject: [PATCH] simplify tab conversion --- .../site-kit/src/lib/markdown/renderer.ts | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/packages/site-kit/src/lib/markdown/renderer.ts b/packages/site-kit/src/lib/markdown/renderer.ts index dcf321ea60..f81e525d46 100644 --- a/packages/site-kit/src/lib/markdown/renderer.ts +++ b/packages/site-kit/src/lib/markdown/renderer.ts @@ -967,24 +967,16 @@ function collect_options(source: string, options: SnippetOptions) { return source; } +/** + * `marked` replaces tabs with four spaces, which is unhelpful. + * This function turns them back into tabs (plus leftover spaces for e.g. `\t * some JSDoc`) + */ function adjust_tab_indentation(source: string, language: string) { - return ( - source - // TODO: what exactly is going on here? The regex finds spaces and replaces them with spaces again? - .replace(/^([\-\+])?((?: )+)/gm, (match, prefix = '', spaces) => { - if ((prefix && language !== 'diff') || language === 'yaml') return match; - - // for no good reason at all, marked replaces tabs with spaces - let i = 0; - let tabs = ''; - for (; i < spaces.length; i += 4) { - tabs += '\t'; - } - tabs += ' '.repeat(i % 4); - return prefix + tabs; - }) - .replace(/\*\\\//g, '*/') - ); + return source.replace(/^([\-\+])?((?: )+)/gm, (match, prefix = '', spaces) => { + if ((prefix && language !== 'diff') || language === 'yaml') return match; + + return prefix + '\t'.repeat(spaces.length / 4) + ' '.repeat(spaces.length % 4); + }); } function replace_blank_lines(html: string) {