playwright-bdd
Version:
BDD Testing with Playwright runner
40 lines • 1.56 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.jsStringWrap = jsStringWrap;
/**
* Adopted version of https://github.com/joliss/js-string-escape
* - added support of backticks
* - added 'quotes' option to indicate which quotes to escape
* - wrap result string with provided quotes
*
* Considered alternative is https://github.com/mathiasbynens/jsesc,
* but it provides additional functionality and much slower
* See: https://github.com/mathiasbynens/jsesc/issues/16
*/
function jsStringWrap(str, { quotes = 'single' } = {}) {
const wrapQuote = quotes === 'single' ? "'" : quotes === 'double' ? '"' : '`';
// eslint-disable-next-line visual/complexity
const escapedStr = ('' + str).replace(/["'`\\\n\r\u2028\u2029]/g, (character) => {
// Escape all characters not included in SingleStringCharacters and
// DoubleStringCharacters on
// http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4
switch (character) {
case wrapQuote:
case '\\':
return '\\' + character;
// Four possible LineTerminator characters need to be escaped:
case '\n':
return '\\n';
case '\r':
return '\\r';
case '\u2028':
return '\\u2028';
case '\u2029':
return '\\u2029';
default:
return character;
}
});
return `${wrapQuote}${escapedStr}${wrapQuote}`;
}
//# sourceMappingURL=jsStringWrap.js.map
;