remark-parse-no-trim
Version:
remark plugin to parse Markdown
37 lines (27 loc) • 844 B
JavaScript
module.exports = factory
var backslash = '\\'
// Factory to de-escape a value, based on a list at `key` in `ctx`.
function factory(ctx, key) {
return unescape
// De-escape a string using the expression at `key` in `ctx`.
function unescape(value) {
var previous = 0
var index = value.indexOf(backslash)
var escape = ctx[key]
var queue = []
var character
while (index !== -1) {
queue.push(value.slice(previous, index))
previous = index + 1
character = value.charAt(previous)
// If the following character is not a valid escape, add the slash.
if (!character || escape.indexOf(character) === -1) {
queue.push(backslash)
}
index = value.indexOf(backslash, previous + 1)
}
queue.push(value.slice(previous))
return queue.join('')
}
}