Skip to content

Commit babba3f

Browse files
Merge pull request #15 from mogstad/push-nrwrmwwzrtvk
Implement external scanner for raw_text
2 parents 4801ac4 + 7688609 commit babba3f

File tree

7 files changed

+43756
-43914
lines changed

7 files changed

+43756
-43914
lines changed

grammar.js

+13-13
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,22 @@ function noJSX(obj) {
1010
return;
1111
}
1212

13-
if (typeof obj === 'object') {
13+
if (typeof obj === "object") {
1414
if (obj === null) return;
1515

16-
if (obj.type === 'CHOICE' && Array.isArray(obj.members)) {
17-
obj.members = obj.members.filter(member => {
16+
if (obj.type === "CHOICE" && Array.isArray(obj.members)) {
17+
obj.members = obj.members.filter((member) => {
1818
if (!member.name) return true;
1919

20-
return !member.name.includes('jsx');
20+
return !member.name.includes("jsx");
2121
});
2222

2323
noJSX(obj.members);
2424
return;
2525
}
2626

2727
for (let [key, value] of Object.entries(obj)) {
28-
if (key.includes('jsx')) {
28+
if (key.includes("jsx")) {
2929
delete obj[key];
3030
} else {
3131
noJSX(value);
@@ -62,15 +62,15 @@ module.exports = grammar(JavaScript, {
6262
* https://github.com/emberjs/rfcs/
6363
*/
6464
glimmer_template: ($) =>
65-
seq(
66-
field("open_tag", $.glimmer_opening_tag),
67-
optional(alias(repeat($._glimmer_template_content), $.raw_text)),
68-
field("close_tag", $.glimmer_closing_tag),
69-
),
65+
seq(
66+
field("open_tag", $.glimmer_opening_tag),
67+
optional($.raw_text),
68+
field("close_tag", $.glimmer_closing_tag),
69+
),
7070

71-
_glimmer_template_content: (_) => /.{1,}/,
72-
glimmer_opening_tag: (_) => "<template>",
73-
glimmer_closing_tag: (_) => "</template>",
71+
glimmer_opening_tag: ($) => seq("<", $.glimmer_template_tag_name, ">"),
72+
glimmer_closing_tag: ($) => seq("</", $.glimmer_template_tag_name, ">"),
73+
glimmer_template_tag_name: (_) => "template",
7474

7575
/**
7676
* 2. Any Expression.

src/grammar.json

+36-14
Original file line numberDiff line numberDiff line change
@@ -2409,16 +2409,8 @@
24092409
"type": "CHOICE",
24102410
"members": [
24112411
{
2412-
"type": "ALIAS",
2413-
"content": {
2414-
"type": "REPEAT",
2415-
"content": {
2416-
"type": "SYMBOL",
2417-
"name": "_glimmer_template_content"
2418-
}
2419-
},
2420-
"named": true,
2421-
"value": "raw_text"
2412+
"type": "SYMBOL",
2413+
"name": "raw_text"
24222414
},
24232415
{
24242416
"type": "BLANK"
@@ -2440,12 +2432,38 @@
24402432
"value": ".{1,}"
24412433
},
24422434
"glimmer_opening_tag": {
2443-
"type": "STRING",
2444-
"value": "<template>"
2435+
"type": "SEQ",
2436+
"members": [
2437+
{
2438+
"type": "STRING",
2439+
"value": "<"
2440+
},
2441+
{
2442+
"type": "SYMBOL",
2443+
"name": "glimmer_template_tag_name"
2444+
},
2445+
{
2446+
"type": "STRING",
2447+
"value": ">"
2448+
}
2449+
]
24452450
},
24462451
"glimmer_closing_tag": {
2447-
"type": "STRING",
2448-
"value": "</template>"
2452+
"type": "SEQ",
2453+
"members": [
2454+
{
2455+
"type": "STRING",
2456+
"value": "</"
2457+
},
2458+
{
2459+
"type": "SYMBOL",
2460+
"name": "glimmer_template_tag_name"
2461+
},
2462+
{
2463+
"type": "STRING",
2464+
"value": ">"
2465+
}
2466+
]
24492467
},
24502468
"html_character_reference": {
24512469
"type": "PATTERN",
@@ -6221,6 +6239,10 @@
62216239
"value": ";"
62226240
}
62236241
]
6242+
},
6243+
"glimmer_template_tag_name": {
6244+
"type": "STRING",
6245+
"value": "template"
62246246
}
62256247
},
62266248
"extras": [

src/node-types.json

+39-10
Original file line numberDiff line numberDiff line change
@@ -1616,6 +1616,36 @@
16161616
}
16171617
}
16181618
},
1619+
{
1620+
"type": "glimmer_closing_tag",
1621+
"named": true,
1622+
"fields": {},
1623+
"children": {
1624+
"multiple": false,
1625+
"required": true,
1626+
"types": [
1627+
{
1628+
"type": "glimmer_template_tag_name",
1629+
"named": true
1630+
}
1631+
]
1632+
}
1633+
},
1634+
{
1635+
"type": "glimmer_opening_tag",
1636+
"named": true,
1637+
"fields": {},
1638+
"children": {
1639+
"multiple": false,
1640+
"required": true,
1641+
"types": [
1642+
{
1643+
"type": "glimmer_template_tag_name",
1644+
"named": true
1645+
}
1646+
]
1647+
}
1648+
},
16191649
{
16201650
"type": "glimmer_template",
16211651
"named": true,
@@ -2252,11 +2282,6 @@
22522282
]
22532283
}
22542284
},
2255-
{
2256-
"type": "raw_text",
2257-
"named": true,
2258-
"fields": {}
2259-
},
22602285
{
22612286
"type": "regex",
22622287
"named": true,
@@ -2989,6 +3014,10 @@
29893014
"type": "<",
29903015
"named": false
29913016
},
3017+
{
3018+
"type": "</",
3019+
"named": false
3020+
},
29923021
{
29933022
"type": "<<",
29943023
"named": false
@@ -3174,11 +3203,7 @@
31743203
"named": false
31753204
},
31763205
{
3177-
"type": "glimmer_closing_tag",
3178-
"named": true
3179-
},
3180-
{
3181-
"type": "glimmer_opening_tag",
3206+
"type": "glimmer_template_tag_name",
31823207
"named": true
31833208
},
31843209
{
@@ -3245,6 +3270,10 @@
32453270
"type": "property_identifier",
32463271
"named": true
32473272
},
3273+
{
3274+
"type": "raw_text",
3275+
"named": true
3276+
},
32483277
{
32493278
"type": "regex_flags",
32503279
"named": true

0 commit comments

Comments
 (0)