mirror of https://github.com/sveltejs/svelte
parent
66b64e254d
commit
a85b09ea97
@ -0,0 +1,10 @@
|
||||
// Adapted from https://github.com/acornjs/acorn/blob/6584815dca7440e00de841d1dad152302fdd7ca5/src/tokenize.js
|
||||
// Reproduced under MIT License https://github.com/acornjs/acorn/blob/master/LICENSE
|
||||
|
||||
export default function fullCharCodeAt(str: string, i: number): number {
|
||||
let code = str.charCodeAt(i)
|
||||
if (code <= 0xd7ff || code >= 0xe000) return code;
|
||||
|
||||
let next = str.charCodeAt(i + 1);
|
||||
return (code << 10) + next - 0x35fdc00;
|
||||
}
|
@ -1,10 +1,14 @@
|
||||
import { isIdentifierStart, isIdentifierChar } from 'acorn';
|
||||
import fullCharCodeAt from './fullCharCodeAt';
|
||||
|
||||
export default function isValidIdentifier(str: string): boolean {
|
||||
if (!isIdentifierStart(str.charCodeAt(0), true)) return false;
|
||||
let i = 0;
|
||||
|
||||
for (let i = 0; i < str.length; i += 1) {
|
||||
if (!isIdentifierChar(str.charCodeAt(i), true)) return false;
|
||||
while (i < str.length) {
|
||||
const code = fullCharCodeAt(str, i);
|
||||
if (!(i === 0 ? isIdentifierStart : isIdentifierChar)(code, true)) return false;
|
||||
|
||||
i += code <= 0xffff ? 1 : 2;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -0,0 +1,3 @@
|
||||
{{#each things as 𐊧}}
|
||||
<p>𐊧</p>
|
||||
{{/each}}
|
@ -0,0 +1,41 @@
|
||||
{
|
||||
"hash": 2991613308,
|
||||
"html": {
|
||||
"start": 0,
|
||||
"end": 43,
|
||||
"type": "Fragment",
|
||||
"children": [
|
||||
{
|
||||
"start": 0,
|
||||
"end": 43,
|
||||
"type": "EachBlock",
|
||||
"expression": {
|
||||
"type": "Identifier",
|
||||
"start": 8,
|
||||
"end": 14,
|
||||
"name": "things"
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"start": 24,
|
||||
"end": 33,
|
||||
"type": "Element",
|
||||
"name": "p",
|
||||
"attributes": [],
|
||||
"children": [
|
||||
{
|
||||
"start": 27,
|
||||
"end": 29,
|
||||
"type": "Text",
|
||||
"data": "𐊧"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"context": "𐊧"
|
||||
}
|
||||
]
|
||||
},
|
||||
"css": null,
|
||||
"js": null
|
||||
}
|
Loading…
Reference in new issue