UNPKG

@kitmi/utils

Version:

A JavaScript utility library for both server and browser

45 lines (35 loc) 865 B
import replaceAll from './replaceAll'; /** * Unquote a string * @function string.unquote * @param {String} str * @param {boolean} [unescape=false] - True to unescape slashed quote, default false * @param {Set|Array} [quoteSet] - Set of chars * @returns {String} */ function unquote(str, unescape, quoteSet) { if (typeof str !== 'string') { return str; } if (str.length < 2) { return str; } let start = str[0]; if (start !== str[str.length - 1]) { return str; } if (quoteSet) { if (Array.isArray(quoteSet)) { quoteSet = new Set(quoteSet); } if (!quoteSet.has(start)) { return str; } } str = str.slice(1, -1); if (unescape) { return replaceAll(str, '\\' + start, start); } return str; } export default unquote;