Skip to content

Commit

Permalink
feat(plugin-shiki): move <pre> style attr to preWrapper (#166)
Browse files Browse the repository at this point in the history
  • Loading branch information
pengzhanbo committed May 29, 2024
1 parent 816e6c8 commit 3942641
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 60 deletions.
12 changes: 6 additions & 6 deletions plugins/plugin-shiki/src/node/markdown/preWrapperPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type { Markdown } from 'vuepress/markdown'
import type { PreWrapperOptions } from '../types.js'
import { resolveAttr, resolveLanguage } from '../utils.js'

const PRE_ATTRS_REGEXP = /<pre([\s\S]*?class="[^"]*")([^>]*)>/
const PRE_ATTRS_REGEXP = /<pre([\s\S]*?)style="([^"]*)"([^>]*)>/

export const preWrapperPlugin = (
md: Markdown,
Expand Down Expand Up @@ -48,16 +48,16 @@ export const preWrapperPlugin = (
}

const title = resolveAttr(info, 'title') || lang
let attrs = ''
let styles = ''

// before: maybe `v-pre class="shiki *"`
// after: style="*" tab-index="*"
result = result.replace(PRE_ATTRS_REGEXP, (_, before, after) => {
attrs = after.trim()
result = result.replace(PRE_ATTRS_REGEXP, (_, before, style, after) => {
styles = style.trim()
// Keep `v-pre class="*"`, remove the rest.
return `<pre${before.trimEnd()}>`
return `<pre ${before.trim()}${after.trimEnd()}>`
})

return `<div class="${languageClass}" data-ext="${lang}" data-title="${title}" ${attrs}>${result}</div>`
return `<div class="${languageClass}" data-ext="${lang}" data-title="${title}" style="${styles}">${result}</div>`
}
}
2 changes: 2 additions & 0 deletions plugins/plugin-shiki/src/node/transformers/getTransformers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import type { ShikiTransformer } from 'shiki'
import type { ShikiHighlightOptions } from '../types.js'
import {
addClassTransformer,
cleanupTransformer,
emptyLineTransformer,
removeEscapeTransformer,
} from './vuepressTransformers.js'
Expand Down Expand Up @@ -40,6 +41,7 @@ export const getTransformers = (

transformers.push(
addClassTransformer,
cleanupTransformer,
removeEscapeTransformer,
emptyLineTransformer,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ export const addClassTransformer: ShikiTransformer = {
},
}

export const cleanupTransformer: ShikiTransformer = {
name: 'vuepress:cleanup',
pre(node) {
delete node.properties.tabindex
},
}

/**
* This `transformer` is primarily for the usage instructions of themes.
* When developers need to provide an example like `// [!code xxx]`,
Expand Down
Loading

0 comments on commit 3942641

Please sign in to comment.