1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-25 15:29:32 -05:00

chore: optimize USVString webidl converters (#10865)

This commit is contained in:
Luca Casonato 2021-06-06 16:56:44 +02:00 committed by GitHub
parent 1fb2e23a67
commit 5bd77f29e5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -331,29 +331,28 @@
converters.USVString = (V, opts) => {
const S = converters.DOMString(V, opts);
const n = S.length;
const U = [];
let U = "";
for (let i = 0; i < n; ++i) {
const c = S.charCodeAt(i);
if (c < 0xd800 || c > 0xdfff) {
U.push(String.fromCodePoint(c));
U += String.fromCodePoint(c);
} else if (0xdc00 <= c && c <= 0xdfff) {
U.push(String.fromCodePoint(0xfffd));
U += String.fromCodePoint(0xfffd);
} else if (i === n - 1) {
U.push(String.fromCodePoint(0xfffd));
U += String.fromCodePoint(0xfffd);
} else {
const d = S.charCodeAt(i + 1);
if (0xdc00 <= d && d <= 0xdfff) {
const a = c & 0x3ff;
const b = d & 0x3ff;
U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));
U += String.fromCodePoint((2 << 15) + (2 << 9) * a + b);
++i;
} else {
U.push(String.fromCodePoint(0xfffd));
U += String.fromCodePoint(0xfffd);
}
}
}
return U.join("");
return U;
};
converters.object = (V, opts) => {