mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 09:46:22 +00:00
27 lines
1.0 KiB
JavaScript
27 lines
1.0 KiB
JavaScript
'use strict'
|
|
|
|
import sanitizeHtml from 'sanitize-html'
|
|
|
|
module.exports = function sanitizePlugin (md, options) {
|
|
options = options || {}
|
|
|
|
md.core.ruler.after('linkify', 'sanitize_inline', state => {
|
|
for (let tokenIdx = 0; tokenIdx < state.tokens.length; tokenIdx++) {
|
|
if (state.tokens[tokenIdx].type === 'html_block') {
|
|
state.tokens[tokenIdx].content = sanitizeHtml(state.tokens[tokenIdx].content, options)
|
|
}
|
|
if (state.tokens[tokenIdx].type === 'fence') {
|
|
state.tokens[tokenIdx].content = state.tokens[tokenIdx].content.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"')
|
|
}
|
|
if (state.tokens[tokenIdx].type === 'inline') {
|
|
const inlineTokens = state.tokens[tokenIdx].children
|
|
for (let childIdx = 0; childIdx < inlineTokens.length; childIdx++) {
|
|
if (inlineTokens[childIdx].type === 'html_inline') {
|
|
inlineTokens[childIdx].content = sanitizeHtml(inlineTokens[childIdx].content, options)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|