mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 09:46:22 +00:00
allow detect code block or not in escapeHtml function
This commit is contained in:
@@ -6,7 +6,7 @@ export function lastFindInArray (array, callback) {
|
||||
}
|
||||
}
|
||||
|
||||
export function escapeHtmlCharacters (html) {
|
||||
export function escapeHtmlCharacters (html, opt = { detectCodeBlock: false }) {
|
||||
const matchHtmlRegExp = /["'&<>]/g
|
||||
const escapes = ['"', '&', ''', '<', '>']
|
||||
let match = null
|
||||
@@ -18,20 +18,22 @@ export function escapeHtmlCharacters (html) {
|
||||
// detecting code block
|
||||
while ((match = matchHtmlRegExp.exec(html)) != null) {
|
||||
const current = { char: match[0], index: match.index }
|
||||
// position of the nearest line start
|
||||
let previousLineEnd = current.index - 1
|
||||
while (html[previousLineEnd] !== '\n' && previousLineEnd !== -1) {
|
||||
previousLineEnd--
|
||||
}
|
||||
// 4 spaces means this character is in a code block
|
||||
if (
|
||||
html[previousLineEnd + 1] === ' ' &&
|
||||
html[previousLineEnd + 2] === ' ' &&
|
||||
html[previousLineEnd + 3] === ' ' &&
|
||||
html[previousLineEnd + 4] === ' '
|
||||
) {
|
||||
// so skip it
|
||||
continue
|
||||
if (opt.detectCodeBlock) {
|
||||
// position of the nearest line start
|
||||
let previousLineEnd = current.index - 1
|
||||
while (html[previousLineEnd] !== '\n' && previousLineEnd !== -1) {
|
||||
previousLineEnd--
|
||||
}
|
||||
// 4 spaces means this character is in a code block
|
||||
if (
|
||||
html[previousLineEnd + 1] === ' ' &&
|
||||
html[previousLineEnd + 2] === ' ' &&
|
||||
html[previousLineEnd + 3] === ' ' &&
|
||||
html[previousLineEnd + 4] === ' '
|
||||
) {
|
||||
// so skip it
|
||||
continue
|
||||
}
|
||||
}
|
||||
// otherwise, escape it !!!
|
||||
if (current.char === '&') {
|
||||
|
||||
Reference in New Issue
Block a user