From f232d4d10974a9973325dc8f14d59a75d801496f Mon Sep 17 00:00:00 2001 From: Siddhant N Trivedi Date: Tue, 17 Mar 2020 03:36:32 +0530 Subject: [PATCH] Added jsescOptions to Numeric Literals (#11028) * Added jsescOptions to Numeric Literals * Added tests and hexadecimal opts to NumericLiterals * Fixed the bug of every numeric literal being coverted to hex * Added conditions when jsesc should be applied * Removed numbers and lowercaseHex from format object * Added newline to test of jsonEscape (to exclude the change) * Modified conditions to apply jsesc * Made the required changes. * Using node.value instead of value --- packages/babel-generator/src/generators/types.js | 5 ++++- .../test/fixtures/escapes/{ => jsonEscape}/options.json | 0 .../test/fixtures/escapes/numeric-literals/input.js | 1 + .../test/fixtures/escapes/numeric-literals/options.json | 6 ++++++ .../test/fixtures/escapes/numeric-literals/output.js | 1 + 5 files changed, 12 insertions(+), 1 deletion(-) rename packages/babel-generator/test/fixtures/escapes/{ => jsonEscape}/options.json (100%) create mode 100644 packages/babel-generator/test/fixtures/escapes/numeric-literals/input.js create mode 100644 packages/babel-generator/test/fixtures/escapes/numeric-literals/options.json create mode 100644 packages/babel-generator/test/fixtures/escapes/numeric-literals/output.js diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js index fbad28e03b..985daa477b 100644 --- a/packages/babel-generator/src/generators/types.js +++ b/packages/babel-generator/src/generators/types.js @@ -120,8 +120,11 @@ export function NullLiteral() { export function NumericLiteral(node: Object) { const raw = this.getPossibleRaw(node); + const opts = this.format.jsescOption; const value = node.value + ""; - if (raw == null) { + if (opts.numbers) { + this.number(jsesc(node.value, opts)); + } else if (raw == null) { this.number(value); // normalize } else if (this.format.minified) { this.number(raw.length < value.length ? raw : value); diff --git a/packages/babel-generator/test/fixtures/escapes/options.json b/packages/babel-generator/test/fixtures/escapes/jsonEscape/options.json similarity index 100% rename from packages/babel-generator/test/fixtures/escapes/options.json rename to packages/babel-generator/test/fixtures/escapes/jsonEscape/options.json diff --git a/packages/babel-generator/test/fixtures/escapes/numeric-literals/input.js b/packages/babel-generator/test/fixtures/escapes/numeric-literals/input.js new file mode 100644 index 0000000000..91c93b0951 --- /dev/null +++ b/packages/babel-generator/test/fixtures/escapes/numeric-literals/input.js @@ -0,0 +1 @@ +let x = 42 \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/escapes/numeric-literals/options.json b/packages/babel-generator/test/fixtures/escapes/numeric-literals/options.json new file mode 100644 index 0000000000..0e857996e4 --- /dev/null +++ b/packages/babel-generator/test/fixtures/escapes/numeric-literals/options.json @@ -0,0 +1,6 @@ +{ + "jsescOption": { + "numbers": "hexadecimal", + "lowercaseHex": true + } +} diff --git a/packages/babel-generator/test/fixtures/escapes/numeric-literals/output.js b/packages/babel-generator/test/fixtures/escapes/numeric-literals/output.js new file mode 100644 index 0000000000..7ba9bc21a7 --- /dev/null +++ b/packages/babel-generator/test/fixtures/escapes/numeric-literals/output.js @@ -0,0 +1 @@ +let x = 0x2a; \ No newline at end of file