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.
		
		
		
		
		
			
		
			
				
					
					
						
							38 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							38 lines
						
					
					
						
							1.0 KiB
						
					
					
				| // Based on:
 | |
| // http://norbertlindenberg.com/2012/05/ecmascript-supplementary-characters/
 | |
| // and:
 | |
| // https://github.com/mathiasbynens/String.fromCodePoint/blob/master
 | |
| // /fromcodepoint.js
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| var floor = Math.floor, fromCharCode = String.fromCharCode;
 | |
| 
 | |
| // eslint-disable-next-line no-unused-vars
 | |
| module.exports = function (codePoint1/*, …codePoints*/) {
 | |
| 	var chars = [], length = arguments.length, i, codePoint, result = "";
 | |
| 	for (i = 0; i < length; ++i) {
 | |
| 		codePoint = Number(arguments[i]);
 | |
| 		if (
 | |
| 			!isFinite(codePoint) ||
 | |
| 			codePoint < 0 ||
 | |
| 			codePoint > 0x10ffff ||
 | |
| 			floor(codePoint) !== codePoint
 | |
| 		) {
 | |
| 			throw new RangeError("Invalid code point " + codePoint);
 | |
| 		}
 | |
| 
 | |
| 		if (codePoint < 0x10000) {
 | |
| 			chars.push(codePoint);
 | |
| 		} else {
 | |
| 			codePoint -= 0x10000;
 | |
| 			// eslint-disable-next-line no-bitwise
 | |
| 			chars.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);
 | |
| 		}
 | |
| 		if (i + 1 !== length && chars.length <= 0x4000) continue;
 | |
| 		result += fromCharCode.apply(null, chars);
 | |
| 		chars.length = 0;
 | |
| 	}
 | |
| 	return result;
 | |
| };
 |