You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
622 B
27 lines
622 B
6 years ago
|
var decodeMap = require("../maps/decode.json");
|
||
|
|
||
|
module.exports = decodeCodePoint;
|
||
|
|
||
|
// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
|
||
|
function decodeCodePoint(codePoint){
|
||
|
|
||
|
if((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF){
|
||
|
return "\uFFFD";
|
||
|
}
|
||
|
|
||
|
if(codePoint in decodeMap){
|
||
|
codePoint = decodeMap[codePoint];
|
||
|
}
|
||
|
|
||
|
var output = "";
|
||
|
|
||
|
if(codePoint > 0xFFFF){
|
||
|
codePoint -= 0x10000;
|
||
|
output += String.fromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
|
||
|
codePoint = 0xDC00 | codePoint & 0x3FF;
|
||
|
}
|
||
|
|
||
|
output += String.fromCharCode(codePoint);
|
||
|
return output;
|
||
|
}
|