fix: customizing the starting line number even if globally set (#2941)

pull/2977/head
mehm8128 2 years ago committed by GitHub
parent 76e9fe86b2
commit 0cd87b1baf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -87,13 +87,18 @@ export async function highlight(
const styleRE = /<pre[^>]*(style=".*?")/ const styleRE = /<pre[^>]*(style=".*?")/
const preRE = /^<pre(.*?)>/ const preRE = /^<pre(.*?)>/
const vueRE = /-vue$/ const vueRE = /-vue$/
const lineNoStartRE = /=(\d*)/
const lineNoRE = /:(no-)?line-numbers(=\d*)?$/ const lineNoRE = /:(no-)?line-numbers(=\d*)?$/
const mustacheRE = /\{\{.*?\}\}/g const mustacheRE = /\{\{.*?\}\}/g
return (str: string, lang: string, attrs: string) => { return (str: string, lang: string, attrs: string) => {
const vPre = vueRE.test(lang) ? '' : 'v-pre' const vPre = vueRE.test(lang) ? '' : 'v-pre'
lang = lang =
lang.replace(lineNoRE, '').replace(vueRE, '').toLowerCase() || defaultLang lang
.replace(lineNoStartRE, '')
.replace(lineNoRE, '')
.replace(vueRE, '')
.toLowerCase() || defaultLang
if (lang) { if (lang) {
const langLoaded = highlighter.getLoadedLanguages().includes(lang as any) const langLoaded = highlighter.getLoadedLanguages().includes(lang as any)

@ -19,7 +19,7 @@ export const lineNumberPlugin = (md: MarkdownIt, enable = false) => {
} }
let startLineNumber = 1 let startLineNumber = 1
const matchStartLineNumber = info.match(/:line-numbers=(\d*)/) const matchStartLineNumber = info.match(/=(\d*)/)
if (matchStartLineNumber && matchStartLineNumber[1]) { if (matchStartLineNumber && matchStartLineNumber[1]) {
startLineNumber = parseInt(matchStartLineNumber[1]) startLineNumber = parseInt(matchStartLineNumber[1])
} }

@ -40,6 +40,7 @@ export function extractTitle(info: string, html = false) {
function extractLang(info: string) { function extractLang(info: string) {
return info return info
.trim() .trim()
.replace(/=(\d*)/, '')
.replace(/:(no-)?line-numbers({| |$|=\d*).*/, '') .replace(/:(no-)?line-numbers({| |$|=\d*).*/, '')
.replace(/(-vue|{| ).*$/, '') .replace(/(-vue|{| ).*$/, '')
.replace(/^vue-html$/, 'template') .replace(/^vue-html$/, 'template')

Loading…
Cancel
Save