Blame view

node_modules/es5-ext/string/from-code-point/shim.js 1.02 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  // 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;
  };