Subsume json (#7985)
* Add Subsume JSON transform https://github.com/tc39/proposal-json-superset is at stage 3. This allows U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR to appear unescaped inside strings and directives. * Move to Stage 3 * Break diretive parsing * Update README * Handle multi-escape sequences * Remove babylon files after rename
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
"before
after";
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
"
"; // Just a U+2028 LINE SEPARATOR
|
||||
"\
"; // Escaped U+2028 LINE SEPARATOR
|
||||
"\u2028"; // Escaped U+2028 LINE SEPARATOR
|
||||
@@ -0,0 +1,5 @@
|
||||
"before
after";
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
"
"; // Just a U+2028 LINE SEPARATOR
|
||||
"\
"; // Escaped U+2028 LINE SEPARATOR
|
||||
"\u2028"; // Escaped U+2028 LINE SEPARATOR
|
||||
@@ -0,0 +1,7 @@
|
||||
"before\u2028after"; // ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
|
||||
"\u2028"; // Just a U+2028 LINE SEPARATOR
|
||||
|
||||
"\
"; // Escaped U+2028 LINE SEPARATOR
|
||||
|
||||
"\u2028"; // Escaped U+2028 LINE SEPARATOR
|
||||
@@ -0,0 +1,5 @@
|
||||
"before
after";
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
"
"; // Just a U+2029 PARAGRAPH SEPARATOR
|
||||
"\
"; // Escaped U+2029 PARAGRAPH SEPARATOR
|
||||
"\u2029"; // Escaped U+2029 PARAGRAPH SEPARATOR
|
||||
@@ -0,0 +1,5 @@
|
||||
"before
after";
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
"
"; // Just a U+2029 PARAGRAPH SEPARATOR
|
||||
"\
"; // Escaped U+2029 PARAGRAPH SEPARATOR
|
||||
"\u2029"; // Escaped U+2029 PARAGRAPH SEPARATOR
|
||||
@@ -0,0 +1,7 @@
|
||||
"before\u2029after"; // ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
|
||||
"\u2029"; // Just a U+2029 PARAGRAPH SEPARATOR
|
||||
|
||||
"\
"; // Escaped U+2029 PARAGRAPH SEPARATOR
|
||||
|
||||
"\u2029"; // Escaped U+2029 PARAGRAPH SEPARATOR
|
||||
@@ -0,0 +1,27 @@
|
||||
expect("\u2028".length).toBe(1);
|
||||
expect("\u2028").toBe("\u2028");
|
||||
|
||||
|
||||
expect("before
after".length).toBe(12);
|
||||
expect("before
after").toBe("before\u2028after");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
|
||||
expect("
".length).toBe(1);
|
||||
expect("
").toBe("\u2028");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\
".length).toBe(0);
|
||||
expect("\
").toBe("");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\
".length).toBe(2);
|
||||
expect("\\
").toBe("\\\u2028");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\
".length).toBe(1);
|
||||
expect("\\\
").toBe("\\");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\\
".length).toBe(3);
|
||||
expect("\\\\
").toBe("\\\\\u2028");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
@@ -0,0 +1,27 @@
|
||||
expect("\u2028".length).toBe(1);
|
||||
expect("\u2028").toBe("\u2028");
|
||||
|
||||
|
||||
expect("before
after".length).toBe(12);
|
||||
expect("before
after").toBe("before\u2028after");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
|
||||
expect("
".length).toBe(1);
|
||||
expect("
").toBe("\u2028");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\
".length).toBe(0);
|
||||
expect("\
").toBe("");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\
".length).toBe(2);
|
||||
expect("\\
").toBe("\\\u2028");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\
".length).toBe(1);
|
||||
expect("\\\
").toBe("\\");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\\
".length).toBe(3);
|
||||
expect("\\\\
").toBe("\\\\\u2028");
|
||||
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
@@ -0,0 +1,19 @@
|
||||
expect("\u2028".length).toBe(1);
|
||||
expect("\u2028").toBe("\u2028");
|
||||
expect("before\u2028after".length).toBe(12);
|
||||
expect("before\u2028after").toBe("before\u2028after"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
|
||||
expect("\u2028".length).toBe(1);
|
||||
expect("\u2028").toBe("\u2028"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\
".length).toBe(0);
|
||||
expect("\
").toBe(""); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\u2028".length).toBe(2);
|
||||
expect("\\\u2028").toBe("\\\u2028"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\
".length).toBe(1);
|
||||
expect("\\\
").toBe("\\"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\\\u2028".length).toBe(3);
|
||||
expect("\\\\\u2028").toBe("\\\\\u2028"); // ^ That's a U+2028 LINE SEPARATOR UTF-16 char
|
||||
@@ -0,0 +1,27 @@
|
||||
expect("\u2029".length).toBe(1);
|
||||
expect("\u2029").toBe("\u2029");
|
||||
|
||||
|
||||
expect("before
after".length).toBe(12);
|
||||
expect("before
after").toBe("before\u2029after");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
|
||||
expect("
".length).toBe(1);
|
||||
expect("
").toBe("\u2029");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\
".length).toBe(0);
|
||||
expect("\
").toBe("");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\
".length).toBe(2);
|
||||
expect("\\
").toBe("\\\u2029");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\
".length).toBe(1);
|
||||
expect("\\\
").toBe("\\");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\\
".length).toBe(3);
|
||||
expect("\\\\
").toBe("\\\\\u2029");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
@@ -0,0 +1,27 @@
|
||||
expect("\u2029".length).toBe(1);
|
||||
expect("\u2029").toBe("\u2029");
|
||||
|
||||
|
||||
expect("before
after".length).toBe(12);
|
||||
expect("before
after").toBe("before\u2029after");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
|
||||
expect("
".length).toBe(1);
|
||||
expect("
").toBe("\u2029");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\
".length).toBe(0);
|
||||
expect("\
").toBe("");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\
".length).toBe(2);
|
||||
expect("\\
").toBe("\\\u2029");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\
".length).toBe(1);
|
||||
expect("\\\
").toBe("\\");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\\
".length).toBe(3);
|
||||
expect("\\\\
").toBe("\\\\\u2029");
|
||||
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
@@ -0,0 +1,19 @@
|
||||
expect("\u2029".length).toBe(1);
|
||||
expect("\u2029").toBe("\u2029");
|
||||
expect("before\u2029after".length).toBe(12);
|
||||
expect("before\u2029after").toBe("before\u2029after"); // ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char (between 'before' and 'after')
|
||||
|
||||
expect("\u2029".length).toBe(1);
|
||||
expect("\u2029").toBe("\u2029"); // ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\
".length).toBe(0);
|
||||
expect("\
").toBe(""); // ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\u2029".length).toBe(2);
|
||||
expect("\\\u2029").toBe("\\\u2029"); // ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\
".length).toBe(1);
|
||||
expect("\\\
").toBe("\\"); // ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
|
||||
expect("\\\\\u2029".length).toBe(3);
|
||||
expect("\\\\\u2029").toBe("\\\\\u2029"); // ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char
|
||||
3
packages/babel-plugin-proposal-json-strings/test/fixtures/options.json
vendored
Normal file
3
packages/babel-plugin-proposal-json-strings/test/fixtures/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["proposal-json-strings"]
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
import runner from "@babel/helper-plugin-test-runner";
|
||||
|
||||
runner(__dirname);
|
||||
Reference in New Issue
Block a user