fuc-new/doc/node_modules/@vuepress/highlighter-helper/lib/node/lineNumbers/resolveLineNumbers.js
hellcat 6adbc04d4b 1
2025-10-03 17:17:08 +08:00

37 lines
1.2 KiB
JavaScript

const LINE_NUMBERS_REGEXP = /:line-numbers\b/;
const NO_LINE_NUMBERS_REGEXP = /:no-line-numbers\b/;
const LINE_NUMBERS_START_REGEXP = /:line-numbers=(\d+)\b/;
/**
* Resolve the `:line-numbers` `:line-numbers=num` / `:no-line-numbers` mark from token info
*
* 从 token 信息中解析 `:line-numbers` `:line-numbers=num` / `:no-line-numbers` 标记
*
* @param info - Code block info string / 代码块信息字符串
* @returns Line numbers configuration / 行号配置
* - `number` - Start line number / 起始行号
* - `true` - Enable line numbers / 启用行号
* - `false` - Disable line numbers / 禁用行号
* - `null` - No configuration found / 未找到配置
*
* @example
* ```ts
* resolveLineNumbers('js :line-numbers') // true
* resolveLineNumbers('js :line-numbers=10') // 10
* resolveLineNumbers('js :no-line-numbers') // false
* resolveLineNumbers('js') // null
* ```
*/
export const resolveLineNumbers = (info) => {
const lineNumber = LINE_NUMBERS_START_REGEXP.exec(info)?.[1];
if (lineNumber) {
return Number(lineNumber);
}
if (LINE_NUMBERS_REGEXP.test(info)) {
return true;
}
if (NO_LINE_NUMBERS_REGEXP.test(info)) {
return false;
}
return null;
};