fix: allow disabling `markdown-it-attrs`

pull/664/head
Divyansh Singh 3 years ago
parent 6028cacb81
commit 4311c749ba

@ -119,6 +119,7 @@ interface MarkdownOptions extends MarkdownIt.Options {
leftDelimiter?: string
rightDelimiter?: string
allowedAttributes?: string[]
disable?: boolean
}
// markdown-it-table-of-contents cplugin options

@ -29,6 +29,7 @@ export interface MarkdownOptions extends MarkdownIt.Options {
leftDelimiter?: string
rightDelimiter?: string
allowedAttributes?: string[]
disable?: boolean
}
theme?: Theme
// https://github.com/Oktavilla/markdown-it-table-of-contents
@ -80,13 +81,17 @@ export const createMarkdownRenderer = async (
},
base
)
// 3rd party plugins
.use(attrs, options.attrs)
.use(anchor, {
slugify,
permalink: anchor.permalink.ariaHidden({}),
...options.anchor
})
// 3rd party plugins
if (!options.attrs?.disable) {
md.use(attrs, options.attrs)
}
md.use(anchor, {
slugify,
permalink: anchor.permalink.ariaHidden({}),
...options.anchor
})
.use(toc, {
slugify,
includeLevel: [2, 3],

@ -1,6 +1,7 @@
// Modified from https://github.com/egoist/markdown-it-highlight-lines
import MarkdownIt from 'markdown-it'
const RE = /{([\d,-]+)}/
const wrapperRE = /^<pre .*?><code>/
export const highlightLinePlugin = (md: MarkdownIt) => {
@ -12,13 +13,27 @@ export const highlightLinePlugin = (md: MarkdownIt) => {
// due to use of markdown-it-attrs, the {0} syntax would have been converted
// to attrs on the token
const attr = token.attrs && token.attrs[0]
let lines = null
if (!attr) {
return fence(...args)
// markdown-it-attrs maybe disabled
const rawInfo = token.info
if (!rawInfo || !RE.test(rawInfo)) {
return fence(...args)
}
const langName = rawInfo.replace(RE, '').trim()
// ensure the next plugin get the correct lang.
token.info = langName
lines = RE.exec(rawInfo)![1]
}
const lines = attr[0]
if (!lines || !/[\d,-]+/.test(lines)) {
return fence(...args)
if (!lines) {
lines = attr![0]
if (!lines || !/[\d,-]+/.test(lines)) {
return fence(...args)
}
}
const lineNumbers = lines

Loading…
Cancel
Save