feat(theme): code block showLineNumbers=start metastring (#10846)

This commit is contained in:
Sébastien Lorber 2025-01-16 17:28:04 +01:00 committed by GitHub
parent fcc9e5c56a
commit e59355be76
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 74 additions and 25 deletions

View file

@ -37,7 +37,7 @@ export {
parseCodeBlockTitle,
parseLanguage,
parseLines,
containsLineNumbers,
getLineNumbersStart,
} from './utils/codeBlockUtils';
export {DEFAULT_SEARCH_TAG} from './utils/searchUtils';

View file

@ -151,8 +151,37 @@ export function parseCodeBlockTitle(metastring?: string): string {
return metastring?.match(codeBlockTitleRegex)?.groups!.title ?? '';
}
export function containsLineNumbers(metastring?: string): boolean {
return Boolean(metastring?.includes('showLineNumbers'));
function getMetaLineNumbersStart(metastring?: string): number | undefined {
const showLineNumbersMeta = metastring
?.split(' ')
.find((str) => str.startsWith('showLineNumbers'));
if (showLineNumbersMeta) {
if (showLineNumbersMeta.startsWith('showLineNumbers=')) {
const value = showLineNumbersMeta.replace('showLineNumbers=', '');
return parseInt(value, 10);
}
return 1;
}
return undefined;
}
export function getLineNumbersStart({
showLineNumbers,
metastring,
}: {
showLineNumbers: boolean | number | undefined;
metastring: string | undefined;
}): number | undefined {
const defaultStart = 1;
if (typeof showLineNumbers === 'boolean') {
return showLineNumbers ? defaultStart : undefined;
}
if (typeof showLineNumbers === 'number') {
return showLineNumbers;
}
return getMetaLineNumbersStart(metastring);
}
/**