diff --git a/src/node/markdown/markdown.ts b/src/node/markdown/markdown.ts index 35081b477a94..3338b240cf39 100644 --- a/src/node/markdown/markdown.ts +++ b/src/node/markdown/markdown.ts @@ -68,14 +68,8 @@ export const createMarkdownRenderer = ( rel: 'noopener noreferrer', ...options.externalLinks }) - - .use(attrs, { - leftDelimiter: '{', - rightDelimiter: '}', - allowedAttributes: [], - ...options.attrs - }) // 3rd party plugins + .use(attrs, options.attrs) .use(anchor, { slugify, permalink: anchor.permalink.ariaHidden({}), diff --git a/src/node/markdown/plugins/highlightLines.ts b/src/node/markdown/plugins/highlightLines.ts index a99c4b0db9b9..28b183932523 100644 --- a/src/node/markdown/plugins/highlightLines.ts +++ b/src/node/markdown/plugins/highlightLines.ts @@ -1,7 +1,6 @@ // Modified from https://github.com/egoist/markdown-it-highlight-lines import MarkdownIt from 'markdown-it' -const RE = /{([\d,-]+)}/ const wrapperRE = /^
/
 
 export const highlightLinePlugin = (md: MarkdownIt) => {
@@ -10,21 +9,24 @@ export const highlightLinePlugin = (md: MarkdownIt) => {
     const [tokens, idx, options] = args
     const token = tokens[idx]
 
-    const rawInfo = token.info
-    if (!rawInfo || !RE.test(rawInfo)) {
+    // 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]
+    if (!attr) {
       return fence(...args)
     }
 
-    const langName = rawInfo.replace(RE, '').trim()
-    // ensure the next plugin get the correct lang.
-    token.info = langName
+    const lines = attr[0]
+    if (!lines || !/[\d,-]+/.test(lines)) {
+      return fence(...args)
+    }
 
-    const lineNumbers = RE.exec(rawInfo)![1]
+    const lineNumbers = lines
       .split(',')
       .map((v) => v.split('-').map((v) => parseInt(v, 10)))
 
     const code = options.highlight
-      ? options.highlight(token.content, langName, '')
+      ? options.highlight(token.content, token.info, '')
       : token.content
 
     const rawCode = code.replace(wrapperRE, '')