kitchensink
Version:
Dispatch's awesome components and style guide
17 lines (16 loc) • 492 B
JavaScript
;
module.exports = function (str) {
return str.replace(/(?:\\*)?"([^"\\]*\\.)*[^"]*"/g, function (match) {
return match
// unescape double-quotes
.replace(/([^\\]|^)\\"/g, '$1"')
// escape escapes
.replace(/(^|[^\\])(\\+)'/g, '$1$2\\\'')
// escape single-quotes - round 1
.replace(/([^\\])'/g, '$1\\\'')
// escape single-quotes - round 2 (for consecutive single-quotes)
.replace(/([^\\])'/g, '$1\\\'')
// convert
.replace(/^"|"$/g, '\'');
});
};