57 lines
4.0 KiB
JavaScript
57 lines
4.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.parseStringLiteral = void 0;
|
|
const rHex = /[\da-fA-F]/;
|
|
const rOct = /[0-7]/;
|
|
const escapeChar = {
|
|
b: '\b',
|
|
f: '\f',
|
|
n: '\n',
|
|
r: '\r',
|
|
t: '\t',
|
|
v: '\x0B'
|
|
};
|
|
function hexVal(c) {
|
|
const code = c.charCodeAt(0);
|
|
if (code >= 97)
|
|
return code - 87;
|
|
if (code >= 65)
|
|
return code - 55;
|
|
return code - 48;
|
|
}
|
|
function parseStringLiteral(str) {
|
|
let ret = '';
|
|
for (let i = 1; i < str.length - 1; i++) {
|
|
if (str[i] !== '\\') {
|
|
ret += str[i];
|
|
continue;
|
|
}
|
|
if (escapeChar[str[i + 1]] !== undefined) {
|
|
ret += escapeChar[str[++i]];
|
|
}
|
|
else if (str[i + 1] === 'u') {
|
|
let val = 0;
|
|
let j = i + 2;
|
|
while (j <= i + 5 && rHex.test(str[j])) {
|
|
val = val * 16 + hexVal(str[j++]);
|
|
}
|
|
i = j - 1;
|
|
ret += String.fromCharCode(val);
|
|
}
|
|
else if (!rOct.test(str[i + 1])) {
|
|
ret += str[++i];
|
|
}
|
|
else {
|
|
let j = i + 1;
|
|
let val = 0;
|
|
while (j <= i + 3 && rOct.test(str[j])) {
|
|
val = val * 8 + hexVal(str[j++]);
|
|
}
|
|
i = j - 1;
|
|
ret += String.fromCharCode(val);
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
exports.parseStringLiteral = parseStringLiteral;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2Utc3RyaW5nLWxpdGVyYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGlxdWlkanMvcGFyc2VyL3BhcnNlLXN0cmluZy1saXRlcmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQTtBQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUE7QUFDcEIsTUFBTSxVQUFVLEdBQUc7SUFDakIsQ0FBQyxFQUFFLElBQUk7SUFDUCxDQUFDLEVBQUUsSUFBSTtJQUNQLENBQUMsRUFBRSxJQUFJO0lBQ1AsQ0FBQyxFQUFFLElBQUk7SUFDUCxDQUFDLEVBQUUsSUFBSTtJQUNQLENBQUMsRUFBRSxNQUFNO0NBQ1YsQ0FBQTtBQUVELFNBQVMsTUFBTSxDQUFFLENBQVM7SUFDeEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1QixJQUFJLElBQUksSUFBSSxFQUFFO1FBQUUsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ2hDLElBQUksSUFBSSxJQUFJLEVBQUU7UUFBRSxPQUFPLElBQUksR0FBRyxFQUFFLENBQUE7SUFDaEMsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQ2xCLENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBRSxHQUFXO0lBQzdDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNaLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN2QyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbkIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNiLFNBQVE7U0FDVDtRQUNELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDeEMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQzVCO2FBQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUM3QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUE7WUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0QyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTthQUNsQztZQUNELENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ1QsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDaEM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1NBQ2hCO2FBQU07WUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFBO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0QyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTthQUNqQztZQUNELENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ1QsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDaEM7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQTlCRCxnREE4QkMifQ==
|