forked from public/fvtt-cthulhu-eternal
43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
import { getUnescapedAny } from './get-unescaped-any.js';
|
|
const removeSlashes = (source, options = {}) => {
|
|
const { getUnescaped = getUnescapedAny } = options;
|
|
const rx = /(?:(\\(u([0-9a-f]{4})|u\{([0-9a-f]+)\}|x([0-9a-f]{2})|(\d{1,3})|([\s\S]|$)))|([\s\S]))/giu;
|
|
let match;
|
|
let result = '';
|
|
while (null != (match = rx.exec(source))) {
|
|
const [, sequence, fallback, unicode, unicodePoint, hex, octal, char, literal] = match;
|
|
if (literal) {
|
|
result += literal;
|
|
continue;
|
|
}
|
|
let code;
|
|
if (char != null) {
|
|
code = null;
|
|
}
|
|
else if (octal) {
|
|
code = Number.parseInt(octal, 8);
|
|
}
|
|
else {
|
|
code = Number.parseInt((unicodePoint || unicode || hex), 16);
|
|
}
|
|
try {
|
|
const unescaped = getUnescaped(sequence, code);
|
|
if (!unescaped) {
|
|
result += fallback;
|
|
}
|
|
else if (unescaped === true) {
|
|
result += getUnescapedAny(sequence, code) || fallback;
|
|
}
|
|
else {
|
|
result += unescaped;
|
|
}
|
|
}
|
|
catch (_error) {
|
|
result += fallback;
|
|
}
|
|
}
|
|
return result;
|
|
};
|
|
const stripSlashes = removeSlashes;
|
|
export { removeSlashes, stripSlashes };
|
|
//# sourceMappingURL=remove-slashes.js.map
|