'use strict'; module.exports = factory; /* 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 prev = 0; var index = value.indexOf('\\'); var escape = ctx[key]; var queue = []; var character; while (index !== -1) { queue.push(value.slice(prev, index)); prev = index + 1; character = value.charAt(prev); /* If the following character is not a valid escape, * add the slash. */ if (!character || escape.indexOf(character) === -1) { queue.push('\\'); } index = value.indexOf('\\', prev); } queue.push(value.slice(prev)); return queue.join(''); } }