From ed625cb2e153841e9c729b4a66adb7f4f518e213 Mon Sep 17 00:00:00 2001 From: Mathias Bynens Date: Tue, 10 Jan 2017 20:14:11 +0100 Subject: [PATCH] Remove `String.fromCodePoint` shim (#279) This is not necessary anymore if we drop support for Node.js v0.10 and v0.12. Ref. https://github.com/babel/babel/issues/4315. --- src/plugins/jsx/fromCodePoint.js | 66 -------------------- src/plugins/jsx/index.js | 6 +- test/fixtures/jsx/basic/entity/expected.json | 4 +- 3 files changed, 4 insertions(+), 72 deletions(-) delete mode 100644 src/plugins/jsx/fromCodePoint.js diff --git a/src/plugins/jsx/fromCodePoint.js b/src/plugins/jsx/fromCodePoint.js deleted file mode 100644 index a69acf7686..0000000000 --- a/src/plugins/jsx/fromCodePoint.js +++ /dev/null @@ -1,66 +0,0 @@ -// Adapted from String.fromcodepoint to export the function without modifying String -/*! https://mths.be/fromcodepoint v0.2.1 by @mathias */ - -// The MIT License (MIT) -// Copyright (c) Mathias Bynens -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -// associated documentation files (the "Software"), to deal in the Software without restriction, -// including without limitation the rights to use, copy, modify, merge, publish, distribute, -// sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all copies or -// substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT -// NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -let fromCodePoint = String.fromCodePoint; - -if (!fromCodePoint) { - const stringFromCharCode = String.fromCharCode; - const floor = Math.floor; - fromCodePoint = function() { - const MAX_SIZE = 0x4000; - const codeUnits = []; - let highSurrogate; - let lowSurrogate; - let index = -1; - const length = arguments.length; - if (!length) { - return ""; - } - let result = ""; - while (++index < length) { - let codePoint = Number(arguments[index]); - if ( - !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity` - codePoint < 0 || // not a valid Unicode code point - codePoint > 0x10FFFF || // not a valid Unicode code point - floor(codePoint) != codePoint // not an integer - ) { - throw RangeError("Invalid code point: " + codePoint); - } - if (codePoint <= 0xFFFF) { // BMP code point - codeUnits.push(codePoint); - } else { // Astral code point; split in surrogate halves - // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - codePoint -= 0x10000; - highSurrogate = (codePoint >> 10) + 0xD800; - lowSurrogate = (codePoint % 0x400) + 0xDC00; - codeUnits.push(highSurrogate, lowSurrogate); - } - if (index + 1 == length || codeUnits.length > MAX_SIZE) { - result += stringFromCharCode.apply(null, codeUnits); - codeUnits.length = 0; - } - } - return result; - }; -} - -export default fromCodePoint; diff --git a/src/plugins/jsx/index.js b/src/plugins/jsx/index.js index bd4633a095..31bf94de8b 100644 --- a/src/plugins/jsx/index.js +++ b/src/plugins/jsx/index.js @@ -1,7 +1,5 @@ /* eslint indent: 0 */ -import fromCodePoint from "./fromCodePoint"; - import XHTMLEntities from "./xhtml"; import { TokenType, types as tt } from "../../tokenizer/types"; import { TokContext, types as tc } from "../../tokenizer/context"; @@ -138,11 +136,11 @@ pp.jsxReadEntity = function() { if (str[1] === "x") { str = str.substr(2); if (HEX_NUMBER.test(str)) - entity = fromCodePoint(parseInt(str, 16)); + entity = String.fromCodePoint(parseInt(str, 16)); } else { str = str.substr(1); if (DECIMAL_NUMBER.test(str)) - entity = fromCodePoint(parseInt(str, 10)); + entity = String.fromCodePoint(parseInt(str, 10)); } } else { entity = XHTMLEntities[str]; diff --git a/test/fixtures/jsx/basic/entity/expected.json b/test/fixtures/jsx/basic/entity/expected.json index 69f4b59ea6..8e4d867723 100644 --- a/test/fixtures/jsx/basic/entity/expected.json +++ b/test/fixtures/jsx/basic/entity/expected.json @@ -136,7 +136,7 @@ } }, "extra": null, - "value": "💩" + "value": "\uD83D\uDCA9" } ] } @@ -144,4 +144,4 @@ ], "directives": [] } -} \ No newline at end of file +}