From c98e1f49d357c43bbc3d3d08753c1022c72842db Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 25 Jun 2017 17:15:52 -0400 Subject: [PATCH] update parser tests --- src/parse/index.ts | 16 +++-- test/parser/index.js | 2 +- .../attribute-dynamic-boolean/output.json | 5 +- .../attribute-dynamic-reserved/output.json | 2 +- .../samples/attribute-dynamic/output.json | 7 +- .../samples/attribute-escaped/output.json | 3 +- .../samples/attribute-multiple/output.json | 3 +- .../samples/attribute-shorthand/output.json | 4 +- .../attribute-static-boolean/output.json | 3 +- .../samples/attribute-static/output.json | 3 +- .../samples/attribute-unquoted/output.json | 3 +- .../samples/binding-shorthand/output.json | 3 +- test/parser/samples/binding/output.json | 5 +- test/parser/samples/comment/output.json | 3 +- .../convert-entities-in-element/output.json | 3 +- .../samples/convert-entities/output.json | 3 +- test/parser/samples/css/output.json | 65 ++++++++++--------- .../samples/each-block-else/output.json | 33 +++++----- .../samples/each-block-indexed/output.json | 15 +++-- .../samples/each-block-keyed/output.json | 13 ++-- test/parser/samples/each-block/output.json | 11 ++-- .../samples/element-with-mustache/output.json | 5 +- .../samples/element-with-text/output.json | 3 +- test/parser/samples/elements/output.json | 49 +++++++------- test/parser/samples/event-handler/output.json | 39 +++++------ test/parser/samples/if-block-else/output.json | 5 +- .../samples/if-block-elseif/output.json | 19 +++--- test/parser/samples/if-block/output.json | 5 +- .../samples/implicitly-closed-li/output.json | 12 +++- test/parser/samples/nbsp/output.json | 2 +- test/parser/samples/raw-mustaches/output.json | 19 +++++- test/parser/samples/refs/output.json | 3 +- .../samples/script-comment-only/output.json | 9 ++- .../output.json | 65 ++++++++++--------- .../script-comment-trailing/output.json | 65 ++++++++++--------- test/parser/samples/script/output.json | 65 ++++++++++--------- .../samples/self-closing-element/output.json | 3 +- .../parser/samples/self-reference/output.json | 2 +- .../space-between-mustaches/output.json | 17 +++-- .../samples/textarea-children/output.json | 2 +- .../transition-intro-no-params/output.json | 2 +- .../samples/transition-intro/output.json | 16 ++--- .../whitespace-leading-trailing/output.json | 9 ++- test/parser/samples/yield/output.json | 29 +++++---- test/parser/update.js | 13 ++++ 45 files changed, 392 insertions(+), 271 deletions(-) create mode 100644 test/parser/update.js diff --git a/src/parse/index.ts b/src/parse/index.ts index f50da4b911..21a503d22a 100644 --- a/src/parse/index.ts +++ b/src/parse/index.ts @@ -77,10 +77,18 @@ export class Parser { this.error('Unexpected end of input'); } - // trim unnecessary whitespace - // stripWhitespace(this.html.children); - // this.html.start = this.html.children[0] && this.html.children.start; - // this.html.end = this.html.children[this.html.children.length] && this.html.children[this.html.children.length].end; + if (this.html.children.length) { + let start = this.html.children[0] && this.html.children[0].start; + while (/\s/.test(template[start])) start += 1; + + let end = this.html.children[this.html.children.length - 1] && this.html.children[this.html.children.length - 1].end; + while (/\s/.test(template[end - 1])) end -= 1; + + this.html.start = start; + this.html.end = end; + } else { + this.html.start = this.html.end = null; + } } current() { diff --git a/test/parser/index.js b/test/parser/index.js index 76ef8a7b19..6bdd1b6376 100644 --- a/test/parser/index.js +++ b/test/parser/index.js @@ -2,7 +2,7 @@ import assert from 'assert'; import fs from 'fs'; import { svelte } from '../helpers.js'; -describe.skip('parse', () => { +describe('parse', () => { fs.readdirSync('test/parser/samples').forEach(dir => { if (dir[0] === '.') return; diff --git a/test/parser/samples/attribute-dynamic-boolean/output.json b/test/parser/samples/attribute-dynamic-boolean/output.json index c4e1417c10..af1635a55d 100644 --- a/test/parser/samples/attribute-dynamic-boolean/output.json +++ b/test/parser/samples/attribute-dynamic-boolean/output.json @@ -1,4 +1,5 @@ { + "hash": 3179574701, "html": { "start": 0, "end": 45, @@ -21,9 +22,9 @@ "end": 32, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 22, "end": 30, - "type": "Identifier", "name": "readonly" } } @@ -36,4 +37,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/attribute-dynamic-reserved/output.json b/test/parser/samples/attribute-dynamic-reserved/output.json index a097655e2a..aef0e5cb63 100644 --- a/test/parser/samples/attribute-dynamic-reserved/output.json +++ b/test/parser/samples/attribute-dynamic-reserved/output.json @@ -1,5 +1,5 @@ { - "hash": 3305933215, + "hash": 2788845841, "html": { "start": 0, "end": 29, diff --git a/test/parser/samples/attribute-dynamic/output.json b/test/parser/samples/attribute-dynamic/output.json index 2f1cc44454..79ef81065f 100644 --- a/test/parser/samples/attribute-dynamic/output.json +++ b/test/parser/samples/attribute-dynamic/output.json @@ -1,4 +1,5 @@ { + "hash": 804348386, "html": { "start": 0, "end": 46, @@ -27,9 +28,9 @@ "end": 28, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 21, "end": 26, - "type": "Identifier", "name": "color" } }, @@ -48,9 +49,9 @@ "end": 40, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 33, "end": 38, - "type": "Identifier", "name": "color" } } @@ -60,4 +61,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/attribute-escaped/output.json b/test/parser/samples/attribute-escaped/output.json index 4dcc1f561b..974084bcdd 100644 --- a/test/parser/samples/attribute-escaped/output.json +++ b/test/parser/samples/attribute-escaped/output.json @@ -1,4 +1,5 @@ { + "hash": 1563956934, "html": { "start": 0, "end": 41, @@ -31,4 +32,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/attribute-multiple/output.json b/test/parser/samples/attribute-multiple/output.json index 30112ec629..81af977b51 100644 --- a/test/parser/samples/attribute-multiple/output.json +++ b/test/parser/samples/attribute-multiple/output.json @@ -1,4 +1,5 @@ { + "hash": 507039402, "html": { "start": 0, "end": 28, @@ -45,4 +46,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/attribute-shorthand/output.json b/test/parser/samples/attribute-shorthand/output.json index 979a8820ad..b6578c13eb 100644 --- a/test/parser/samples/attribute-shorthand/output.json +++ b/test/parser/samples/attribute-shorthand/output.json @@ -1,5 +1,5 @@ { - "hash": 4120363214, + "hash": 1705925892, "html": { "start": 0, "end": 10, @@ -18,9 +18,9 @@ "name": "id", "value": [ { + "type": "AttributeShorthand", "start": 6, "end": 8, - "type": "AttributeShorthand", "expression": { "type": "Identifier", "start": 6, diff --git a/test/parser/samples/attribute-static-boolean/output.json b/test/parser/samples/attribute-static-boolean/output.json index 5a7f79bee3..21429893fd 100644 --- a/test/parser/samples/attribute-static-boolean/output.json +++ b/test/parser/samples/attribute-static-boolean/output.json @@ -1,4 +1,5 @@ { + "hash": 606864228, "html": { "start": 0, "end": 30, @@ -24,4 +25,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/attribute-static/output.json b/test/parser/samples/attribute-static/output.json index 5cc13ffabf..394f95f458 100644 --- a/test/parser/samples/attribute-static/output.json +++ b/test/parser/samples/attribute-static/output.json @@ -1,4 +1,5 @@ { + "hash": 1493227373, "html": { "start": 0, "end": 23, @@ -31,4 +32,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/attribute-unquoted/output.json b/test/parser/samples/attribute-unquoted/output.json index c2a788b0a7..474d925b2e 100644 --- a/test/parser/samples/attribute-unquoted/output.json +++ b/test/parser/samples/attribute-unquoted/output.json @@ -1,4 +1,5 @@ { + "hash": 3488539025, "html": { "start": 0, "end": 21, @@ -31,4 +32,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/binding-shorthand/output.json b/test/parser/samples/binding-shorthand/output.json index ba22c66d33..8a7b615cf4 100644 --- a/test/parser/samples/binding-shorthand/output.json +++ b/test/parser/samples/binding-shorthand/output.json @@ -1,4 +1,5 @@ { + "hash": 3088875001, "html": { "start": 0, "end": 18, @@ -29,4 +30,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/binding/output.json b/test/parser/samples/binding/output.json index f307779950..74f2059f59 100644 --- a/test/parser/samples/binding/output.json +++ b/test/parser/samples/binding/output.json @@ -1,4 +1,5 @@ { + "hash": 1937205193, "html": { "start": 0, "end": 25, @@ -16,9 +17,9 @@ "type": "Binding", "name": "value", "value": { + "type": "Identifier", "start": 19, "end": 23, - "type": "Identifier", "name": "name" } } @@ -29,4 +30,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/comment/output.json b/test/parser/samples/comment/output.json index 635c0fc2e0..e77c968b6b 100644 --- a/test/parser/samples/comment/output.json +++ b/test/parser/samples/comment/output.json @@ -1,4 +1,5 @@ { + "hash": 3294612990, "html": { "start": 0, "end": 18, @@ -14,4 +15,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/convert-entities-in-element/output.json b/test/parser/samples/convert-entities-in-element/output.json index 4f39e826e7..cb3e50ec3b 100644 --- a/test/parser/samples/convert-entities-in-element/output.json +++ b/test/parser/samples/convert-entities-in-element/output.json @@ -1,4 +1,5 @@ { + "hash": 2365862121, "html": { "start": 0, "end": 24, @@ -23,4 +24,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/convert-entities/output.json b/test/parser/samples/convert-entities/output.json index f5124865c8..479bae3064 100644 --- a/test/parser/samples/convert-entities/output.json +++ b/test/parser/samples/convert-entities/output.json @@ -1,4 +1,5 @@ { + "hash": 156753432, "html": { "start": 0, "end": 17, @@ -14,4 +15,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/css/output.json b/test/parser/samples/css/output.json index 72c2a139db..4650ccea46 100644 --- a/test/parser/samples/css/output.json +++ b/test/parser/samples/css/output.json @@ -1,4 +1,5 @@ { + "hash": 1147407419, "html": { "start": 0, "end": 14, @@ -18,6 +19,12 @@ "data": "foo" } ] + }, + { + "start": 14, + "end": 16, + "type": "Text", + "data": "\n\n" } ] }, @@ -25,65 +32,65 @@ "start": 16, "end": 56, "attributes": [], - "content": { - "start": 23, - "end": 48, - "styles": "\n\tdiv {\n\t\tcolor: red;\n\t}\n" - }, "children": [ { "type": "Rule", - "start": 25, - "end": 47, "selector": { "type": "SelectorList", - "start": 25, - "end": 28, "children": [ { "type": "Selector", - "start": 25, - "end": 28, "children": [ { "type": "TypeSelector", + "name": "div", "start": 25, - "end": 28, - "name": "div" + "end": 28 } - ] + ], + "start": 25, + "end": 28 } - ] + ], + "start": 25, + "end": 28 }, "block": { "type": "Block", - "start": 29, - "end": 47, "children": [ { "type": "Declaration", - "start": 33, - "end": 43, "important": false, "property": "color", "value": { "type": "Value", - "start": 39, - "end": 43, "children": [ { "type": "Identifier", + "name": "red", "start": 40, - "end": 43, - "name": "red" + "end": 43 } - ] - } + ], + "start": 39, + "end": 43 + }, + "start": 33, + "end": 43 } - ] - } + ], + "start": 29, + "end": 47 + }, + "start": 25, + "end": 47 } - ] + ], + "content": { + "start": 23, + "end": 48, + "styles": "\n\tdiv {\n\t\tcolor: red;\n\t}\n" + } }, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/each-block-else/output.json b/test/parser/samples/each-block-else/output.json index 8d82d5a677..0dadad5f65 100644 --- a/test/parser/samples/each-block-else/output.json +++ b/test/parser/samples/each-block-else/output.json @@ -1,4 +1,5 @@ { + "hash": 3238289871, "html": { "start": 0, "end": 84, @@ -9,12 +10,11 @@ "end": 84, "type": "EachBlock", "expression": { + "type": "Identifier", "start": 8, "end": 15, - "type": "Identifier", "name": "animals" }, - "context": "animal", "children": [ { "start": 29, @@ -28,40 +28,41 @@ "end": 42, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 34, "end": 40, - "type": "Identifier", "name": "animal" } } ] } ], + "context": "animal", "else": { + "start": 55, + "end": 75, + "type": "ElseBlock", "children": [ { + "start": 57, + "end": 74, + "type": "Element", + "name": "p", "attributes": [], "children": [ { - "data": "no animals", - "end": 70, "start": 60, - "type": "Text" + "end": 70, + "type": "Text", + "data": "no animals" } - ], - "end": 74, - "name": "p", - "start": 57, - "type": "Element" + ] } - ], - "end": 75, - "start": 55, - "type": "ElseBlock" + ] } } ] }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/each-block-indexed/output.json b/test/parser/samples/each-block-indexed/output.json index 46c4ac34eb..fc8954d6ad 100644 --- a/test/parser/samples/each-block-indexed/output.json +++ b/test/parser/samples/each-block-indexed/output.json @@ -1,4 +1,5 @@ { + "hash": 2841674990, "html": { "start": 0, "end": 66, @@ -9,13 +10,11 @@ "end": 66, "type": "EachBlock", "expression": { + "type": "Identifier", "start": 8, "end": 15, - "type": "Identifier", "name": "animals" }, - "context": "animal", - "index": "i", "children": [ { "start": 32, @@ -29,9 +28,9 @@ "end": 40, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 37, "end": 38, - "type": "Identifier", "name": "i" } }, @@ -46,18 +45,20 @@ "end": 52, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 44, "end": 50, - "type": "Identifier", "name": "animal" } } ] } - ] + ], + "context": "animal", + "index": "i" } ] }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/each-block-keyed/output.json b/test/parser/samples/each-block-keyed/output.json index 3ace8016ec..1a16afb82b 100644 --- a/test/parser/samples/each-block-keyed/output.json +++ b/test/parser/samples/each-block-keyed/output.json @@ -1,4 +1,5 @@ { + "hash": 2025411181, "html": { "start": 0, "end": 54, @@ -9,13 +10,11 @@ "end": 54, "type": "EachBlock", "expression": { + "type": "Identifier", "start": 8, "end": 13, - "type": "Identifier", "name": "todos" }, - "context": "todo", - "key": "id", "children": [ { "start": 29, @@ -29,18 +28,20 @@ "end": 40, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 34, "end": 38, - "type": "Identifier", "name": "todo" } } ] } - ] + ], + "context": "todo", + "key": "id" } ] }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/each-block/output.json b/test/parser/samples/each-block/output.json index d0534c3206..e549faca39 100644 --- a/test/parser/samples/each-block/output.json +++ b/test/parser/samples/each-block/output.json @@ -1,4 +1,5 @@ { + "hash": 220340986, "html": { "start": 0, "end": 56, @@ -9,12 +10,11 @@ "end": 56, "type": "EachBlock", "expression": { + "type": "Identifier", "start": 8, "end": 15, - "type": "Identifier", "name": "animals" }, - "context": "animal", "children": [ { "start": 29, @@ -28,18 +28,19 @@ "end": 42, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 34, "end": 40, - "type": "Identifier", "name": "animal" } } ] } - ] + ], + "context": "animal" } ] }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/element-with-mustache/output.json b/test/parser/samples/element-with-mustache/output.json index 131b081edc..fd6799e192 100644 --- a/test/parser/samples/element-with-mustache/output.json +++ b/test/parser/samples/element-with-mustache/output.json @@ -1,4 +1,5 @@ { + "hash": 1265376132, "html": { "start": 0, "end": 24, @@ -22,9 +23,9 @@ "end": 18, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 12, "end": 16, - "type": "Identifier", "name": "name" } }, @@ -40,4 +41,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/element-with-text/output.json b/test/parser/samples/element-with-text/output.json index a93a083da1..22cae35547 100644 --- a/test/parser/samples/element-with-text/output.json +++ b/test/parser/samples/element-with-text/output.json @@ -1,4 +1,5 @@ { + "hash": 611274658, "html": { "start": 0, "end": 17, @@ -23,4 +24,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/elements/output.json b/test/parser/samples/elements/output.json index 79608f9132..7b4e6bffe1 100644 --- a/test/parser/samples/elements/output.json +++ b/test/parser/samples/elements/output.json @@ -1,23 +1,28 @@ { - "html": { - "start": 0, - "end": 15, - "type": "Fragment", - "children": [{ - "attributes": [{ - "end": 14, - "name": "html", - "start": 10, - "type": "Attribute", - "value": true - }], - "children": [], - "end": 15, - "name": "!doctype", - "start": 0, - "type": "Element" - }] - }, - "css": null, - "js": null -} + "hash": 825536165, + "html": { + "start": 0, + "end": 15, + "type": "Fragment", + "children": [ + { + "start": 0, + "end": 15, + "type": "Element", + "name": "!doctype", + "attributes": [ + { + "start": 10, + "end": 14, + "type": "Attribute", + "name": "html", + "value": true + } + ], + "children": [] + } + ] + }, + "css": null, + "js": null +} \ No newline at end of file diff --git a/test/parser/samples/event-handler/output.json b/test/parser/samples/event-handler/output.json index 1a1f27d3d9..2b5844bb1b 100644 --- a/test/parser/samples/event-handler/output.json +++ b/test/parser/samples/event-handler/output.json @@ -1,4 +1,5 @@ { + "hash": 4260626221, "html": { "start": 0, "end": 101, @@ -16,48 +17,48 @@ "type": "EventHandler", "name": "click", "expression": { + "type": "CallExpression", "start": 18, "end": 44, - "type": "CallExpression", "callee": { + "type": "Identifier", "start": 18, "end": 21, - "type": "Identifier", "name": "set" }, "arguments": [ { + "type": "ObjectExpression", "start": 22, "end": 43, - "type": "ObjectExpression", "properties": [ { + "type": "Property", "start": 24, "end": 41, - "type": "Property", - "kind": "init", - "computed": false, "method": false, "shorthand": false, + "computed": false, "key": { + "type": "Identifier", "start": 24, "end": 31, - "type": "Identifier", "name": "visible" }, "value": { + "type": "UnaryExpression", "start": 33, "end": 41, - "type": "UnaryExpression", "operator": "!", "prefix": true, "argument": { + "type": "Identifier", "start": 34, "end": 41, - "type": "Identifier", "name": "visible" } - } + }, + "kind": "init" } ] } @@ -67,10 +68,10 @@ ], "children": [ { - "data": "toggle", "start": 46, "end": 52, - "type": "Text" + "type": "Text", + "data": "toggle" } ] }, @@ -85,10 +86,10 @@ "end": 101, "type": "IfBlock", "expression": { - "end": 76, - "name": "visible", + "type": "Identifier", "start": 69, - "type": "Identifier" + "end": 76, + "name": "visible" }, "children": [ { @@ -99,10 +100,10 @@ "attributes": [], "children": [ { - "data": "hello!", - "end": 89, "start": 83, - "type": "Text" + "end": 89, + "type": "Text", + "data": "hello!" } ] } @@ -112,4 +113,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/if-block-else/output.json b/test/parser/samples/if-block-else/output.json index db3923559b..af2c611220 100644 --- a/test/parser/samples/if-block-else/output.json +++ b/test/parser/samples/if-block-else/output.json @@ -1,4 +1,5 @@ { + "hash": 3134964533, "html": { "start": 0, "end": 56, @@ -9,9 +10,9 @@ "end": 56, "type": "IfBlock", "expression": { + "type": "Identifier", "start": 6, "end": 9, - "type": "Identifier", "name": "foo" }, "children": [ @@ -58,4 +59,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/if-block-elseif/output.json b/test/parser/samples/if-block-elseif/output.json index 743758a970..a2d61f2464 100644 --- a/test/parser/samples/if-block-elseif/output.json +++ b/test/parser/samples/if-block-elseif/output.json @@ -1,4 +1,5 @@ { + "hash": 985817334, "html": { "start": 0, "end": 93, @@ -9,20 +10,20 @@ "end": 93, "type": "IfBlock", "expression": { + "type": "BinaryExpression", "start": 6, "end": 12, - "type": "BinaryExpression", - "operator": ">", "left": { + "type": "Identifier", "start": 6, "end": 7, - "type": "Identifier", "name": "x" }, + "operator": ">", "right": { + "type": "Literal", "start": 10, "end": 12, - "type": "Literal", "value": 10, "raw": "10" } @@ -55,20 +56,20 @@ "type": "IfBlock", "elseif": true, "expression": { + "type": "BinaryExpression", "start": 53, "end": 58, - "type": "BinaryExpression", - "operator": "<", "left": { + "type": "Identifier", "start": 53, "end": 54, - "type": "Identifier", "name": "x" }, + "operator": "<", "right": { + "type": "Literal", "start": 57, "end": 58, - "type": "Literal", "value": 5, "raw": "5" } @@ -98,4 +99,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/if-block/output.json b/test/parser/samples/if-block/output.json index e1019ba1d7..d523d41596 100644 --- a/test/parser/samples/if-block/output.json +++ b/test/parser/samples/if-block/output.json @@ -1,4 +1,5 @@ { + "hash": 2374871934, "html": { "start": 0, "end": 21, @@ -9,9 +10,9 @@ "end": 21, "type": "IfBlock", "expression": { + "type": "Identifier", "start": 6, "end": 9, - "type": "Identifier", "name": "foo" }, "children": [ @@ -27,4 +28,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/implicitly-closed-li/output.json b/test/parser/samples/implicitly-closed-li/output.json index 3263fa8e40..f2aca52f68 100644 --- a/test/parser/samples/implicitly-closed-li/output.json +++ b/test/parser/samples/implicitly-closed-li/output.json @@ -1,5 +1,5 @@ { - "hash": 3806276940, + "hash": 126082492, "html": { "start": 0, "end": 31, @@ -12,6 +12,12 @@ "name": "ul", "attributes": [], "children": [ + { + "start": 4, + "end": 6, + "type": "Text", + "data": "\n\t" + }, { "start": 6, "end": 13, @@ -23,7 +29,7 @@ "start": 10, "end": 13, "type": "Text", - "data": "a" + "data": "a\n\t" } ] }, @@ -38,7 +44,7 @@ "start": 17, "end": 20, "type": "Text", - "data": "b" + "data": "b\n\t" } ] }, diff --git a/test/parser/samples/nbsp/output.json b/test/parser/samples/nbsp/output.json index d8cbb594f6..8b7d487f16 100644 --- a/test/parser/samples/nbsp/output.json +++ b/test/parser/samples/nbsp/output.json @@ -1,5 +1,5 @@ { - "hash": 2678229240, + "hash": 4049070444, "html": { "start": 0, "end": 19, diff --git a/test/parser/samples/raw-mustaches/output.json b/test/parser/samples/raw-mustaches/output.json index 4acedf34ea..e4a1b91c6c 100644 --- a/test/parser/samples/raw-mustaches/output.json +++ b/test/parser/samples/raw-mustaches/output.json @@ -1,4 +1,5 @@ { + "hash": 183399343, "html": { "start": 0, "end": 30, @@ -11,14 +12,20 @@ "name": "p", "attributes": [], "children": [ + { + "start": 3, + "end": 4, + "type": "Text", + "data": " " + }, { "start": 4, "end": 14, "type": "RawMustacheTag", "expression": { + "type": "Identifier", "start": 7, "end": 11, - "type": "Identifier", "name": "raw1" } }, @@ -33,11 +40,17 @@ "end": 25, "type": "RawMustacheTag", "expression": { + "type": "Identifier", "start": 18, "end": 22, - "type": "Identifier", "name": "raw2" } + }, + { + "start": 25, + "end": 26, + "type": "Text", + "data": " " } ] } @@ -45,4 +58,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/refs/output.json b/test/parser/samples/refs/output.json index c158de0848..37761abaff 100644 --- a/test/parser/samples/refs/output.json +++ b/test/parser/samples/refs/output.json @@ -1,4 +1,5 @@ { + "hash": 850398275, "html": { "start": 0, "end": 25, @@ -23,4 +24,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/script-comment-only/output.json b/test/parser/samples/script-comment-only/output.json index 0e8e7877df..1dcc6fe1f4 100644 --- a/test/parser/samples/script-comment-only/output.json +++ b/test/parser/samples/script-comment-only/output.json @@ -1,4 +1,5 @@ { + "hash": 3451341610, "html": { "start": 0, "end": 11, @@ -11,9 +12,15 @@ "name": "div", "attributes": [], "children": [] + }, + { + "start": 11, + "end": 13, + "type": "Text", + "data": "\n\n" } ] }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/script-comment-trailing-multiline/output.json b/test/parser/samples/script-comment-trailing-multiline/output.json index f97eb78052..4319919ee5 100644 --- a/test/parser/samples/script-comment-trailing-multiline/output.json +++ b/test/parser/samples/script-comment-trailing-multiline/output.json @@ -1,4 +1,5 @@ { + "hash": 1378757574, "html": { "start": 0, "end": 24, @@ -22,9 +23,9 @@ "end": 18, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 12, "end": 16, - "type": "Identifier", "name": "name" } }, @@ -35,6 +36,12 @@ "data": "!" } ] + }, + { + "start": 24, + "end": 26, + "type": "Text", + "data": "\n\n" } ] }, @@ -49,73 +56,73 @@ "end": 134, "body": [ { + "type": "ExportDefaultDeclaration", + "start": 36, + "end": 95, "declaration": { + "type": "ObjectExpression", "start": 51, "end": 94, - "type": "ObjectExpression", "properties": [ { + "type": "Property", "start": 55, "end": 91, - "type": "Property", + "method": false, + "shorthand": false, "computed": false, "key": { + "type": "Identifier", "start": 55, "end": 59, - "type": "Identifier", "name": "data" }, - "kind": "init", - "method": false, - "shorthand": false, "value": { + "type": "ArrowFunctionExpression", "start": 61, "end": 91, - "type": "ArrowFunctionExpression", + "id": null, + "generator": false, + "expression": true, "async": false, + "params": [], "body": { + "type": "ObjectExpression", "start": 68, "end": 90, - "type": "ObjectExpression", "properties": [ { + "type": "Property", "start": 73, "end": 86, - "type": "Property", + "method": false, + "shorthand": false, "computed": false, "key": { + "type": "Identifier", "start": 73, "end": 77, - "type": "Identifier", "name": "name" }, - "kind": "init", - "method": false, - "shorthand": false, "value": { + "type": "Literal", "start": 79, "end": 86, - "type": "Literal", - "raw": "'world'", - "value": "world" - } + "value": "world", + "raw": "'world'" + }, + "kind": "init" } ] - }, - "expression": true, - "generator": false, - "id": null, - "params": [] - } + } + }, + "kind": "init" } ] - }, - "end": 95, - "start": 36, - "type": "ExportDefaultDeclaration" + } } ], "sourceType": "module" } } -} +} \ No newline at end of file diff --git a/test/parser/samples/script-comment-trailing/output.json b/test/parser/samples/script-comment-trailing/output.json index e531599fea..2977d6a7fa 100644 --- a/test/parser/samples/script-comment-trailing/output.json +++ b/test/parser/samples/script-comment-trailing/output.json @@ -1,4 +1,5 @@ { + "hash": 619854804, "html": { "start": 0, "end": 24, @@ -22,9 +23,9 @@ "end": 18, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 12, "end": 16, - "type": "Identifier", "name": "name" } }, @@ -35,6 +36,12 @@ "data": "!" } ] + }, + { + "start": 24, + "end": 26, + "type": "Text", + "data": "\n\n" } ] }, @@ -49,73 +56,73 @@ "end": 123, "body": [ { + "type": "ExportDefaultDeclaration", + "start": 36, + "end": 95, "declaration": { + "type": "ObjectExpression", "start": 51, "end": 94, - "type": "ObjectExpression", "properties": [ { + "type": "Property", "start": 55, "end": 91, - "type": "Property", + "method": false, + "shorthand": false, "computed": false, "key": { + "type": "Identifier", "start": 55, "end": 59, - "type": "Identifier", "name": "data" }, - "kind": "init", - "method": false, - "shorthand": false, "value": { + "type": "ArrowFunctionExpression", "start": 61, "end": 91, - "type": "ArrowFunctionExpression", + "id": null, + "generator": false, + "expression": true, "async": false, + "params": [], "body": { + "type": "ObjectExpression", "start": 68, "end": 90, - "type": "ObjectExpression", "properties": [ { + "type": "Property", "start": 73, "end": 86, - "type": "Property", + "method": false, + "shorthand": false, "computed": false, "key": { + "type": "Identifier", "start": 73, "end": 77, - "type": "Identifier", "name": "name" }, - "kind": "init", - "method": false, - "shorthand": false, "value": { + "type": "Literal", "start": 79, "end": 86, - "type": "Literal", - "raw": "'world'", - "value": "world" - } + "value": "world", + "raw": "'world'" + }, + "kind": "init" } ] - }, - "expression": true, - "generator": false, - "id": null, - "params": [] - } + } + }, + "kind": "init" } ] - }, - "end": 95, - "start": 36, - "type": "ExportDefaultDeclaration" + } } ], "sourceType": "module" } } -} +} \ No newline at end of file diff --git a/test/parser/samples/script/output.json b/test/parser/samples/script/output.json index a6af78759f..5c8acef657 100644 --- a/test/parser/samples/script/output.json +++ b/test/parser/samples/script/output.json @@ -1,4 +1,5 @@ { + "hash": 388108696, "html": { "start": 0, "end": 24, @@ -22,9 +23,9 @@ "end": 18, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 12, "end": 16, - "type": "Identifier", "name": "name" } }, @@ -35,6 +36,12 @@ "data": "!" } ] + }, + { + "start": 24, + "end": 26, + "type": "Text", + "data": "\n\n" } ] }, @@ -49,73 +56,73 @@ "end": 96, "body": [ { + "type": "ExportDefaultDeclaration", + "start": 36, + "end": 95, "declaration": { + "type": "ObjectExpression", "start": 51, "end": 94, - "type": "ObjectExpression", "properties": [ { + "type": "Property", "start": 55, "end": 91, - "type": "Property", + "method": false, + "shorthand": false, "computed": false, "key": { + "type": "Identifier", "start": 55, "end": 59, - "type": "Identifier", "name": "data" }, - "kind": "init", - "method": false, - "shorthand": false, "value": { + "type": "ArrowFunctionExpression", "start": 61, "end": 91, - "type": "ArrowFunctionExpression", + "id": null, + "generator": false, + "expression": true, "async": false, + "params": [], "body": { + "type": "ObjectExpression", "start": 68, "end": 90, - "type": "ObjectExpression", "properties": [ { + "type": "Property", "start": 73, "end": 86, - "type": "Property", + "method": false, + "shorthand": false, "computed": false, "key": { + "type": "Identifier", "start": 73, "end": 77, - "type": "Identifier", "name": "name" }, - "kind": "init", - "method": false, - "shorthand": false, "value": { + "type": "Literal", "start": 79, "end": 86, - "type": "Literal", - "raw": "'world'", - "value": "world" - } + "value": "world", + "raw": "'world'" + }, + "kind": "init" } ] - }, - "expression": true, - "generator": false, - "id": null, - "params": [] - } + } + }, + "kind": "init" } ] - }, - "end": 95, - "start": 36, - "type": "ExportDefaultDeclaration" + } } ], "sourceType": "module" } } -} +} \ No newline at end of file diff --git a/test/parser/samples/self-closing-element/output.json b/test/parser/samples/self-closing-element/output.json index 5cba18b6a0..80c1ef5bde 100644 --- a/test/parser/samples/self-closing-element/output.json +++ b/test/parser/samples/self-closing-element/output.json @@ -1,4 +1,5 @@ { + "hash": 4200201687, "html": { "start": 0, "end": 6, @@ -16,4 +17,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/self-reference/output.json b/test/parser/samples/self-reference/output.json index fd5c1543e4..f9c788bd2f 100644 --- a/test/parser/samples/self-reference/output.json +++ b/test/parser/samples/self-reference/output.json @@ -1,5 +1,5 @@ { - "hash": 1792372370, + "hash": 216762188, "html": { "start": 0, "end": 57, diff --git a/test/parser/samples/space-between-mustaches/output.json b/test/parser/samples/space-between-mustaches/output.json index 03a01a64c4..854608fb29 100644 --- a/test/parser/samples/space-between-mustaches/output.json +++ b/test/parser/samples/space-between-mustaches/output.json @@ -1,4 +1,5 @@ { + "hash": 1185019088, "html": { "start": 0, "end": 30, @@ -11,14 +12,20 @@ "name": "p", "attributes": [], "children": [ + { + "start": 3, + "end": 4, + "type": "Text", + "data": " " + }, { "start": 4, "end": 9, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 6, "end": 7, - "type": "Identifier", "name": "a" } }, @@ -33,9 +40,9 @@ "end": 15, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 12, "end": 13, - "type": "Identifier", "name": "b" } }, @@ -50,9 +57,9 @@ "end": 23, "type": "MustacheTag", "expression": { + "type": "Identifier", "start": 20, "end": 21, - "type": "Identifier", "name": "c" } }, @@ -60,7 +67,7 @@ "start": 23, "end": 26, "type": "Text", - "data": " :" + "data": " : " } ] } @@ -68,4 +75,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/textarea-children/output.json b/test/parser/samples/textarea-children/output.json index 4b67ac108a..d4ea6f04bb 100644 --- a/test/parser/samples/textarea-children/output.json +++ b/test/parser/samples/textarea-children/output.json @@ -1,5 +1,5 @@ { - "hash": 3618147195, + "hash": 2992234421, "html": { "start": 0, "end": 63, diff --git a/test/parser/samples/transition-intro-no-params/output.json b/test/parser/samples/transition-intro-no-params/output.json index ae1f76a3bc..cca469ca3e 100644 --- a/test/parser/samples/transition-intro-no-params/output.json +++ b/test/parser/samples/transition-intro-no-params/output.json @@ -1,5 +1,5 @@ { - "hash": 1535528483, + "hash": 503236647, "html": { "start": 0, "end": 27, diff --git a/test/parser/samples/transition-intro/output.json b/test/parser/samples/transition-intro/output.json index 3f73ef3ce1..54ec4da93d 100644 --- a/test/parser/samples/transition-intro/output.json +++ b/test/parser/samples/transition-intro/output.json @@ -1,5 +1,5 @@ { - "hash": 3160753914, + "hash": 3731674194, "html": { "start": 0, "end": 43, @@ -19,18 +19,17 @@ "intro": true, "outro": false, "expression": { - "start": 15, - "end": 27, "type": "ObjectExpression", + "start": 15, + "end": 27, "properties": [ { + "type": "Property", "start": 16, "end": 26, - "type": "Property", "method": false, - "computed": false, "shorthand": false, - "kind": "init", + "computed": false, "key": { "type": "Identifier", "start": 16, @@ -38,12 +37,13 @@ "name": "opacity" }, "value": { + "type": "Literal", "start": 25, "end": 26, - "type": "Literal", "value": 0, "raw": "0" - } + }, + "kind": "init" } ] } diff --git a/test/parser/samples/whitespace-leading-trailing/output.json b/test/parser/samples/whitespace-leading-trailing/output.json index 796829a365..c057bd1f1e 100644 --- a/test/parser/samples/whitespace-leading-trailing/output.json +++ b/test/parser/samples/whitespace-leading-trailing/output.json @@ -1,9 +1,16 @@ { + "hash": 424837432, "html": { "start": 6, "end": 36, "type": "Fragment", "children": [ + { + "start": 0, + "end": 6, + "type": "Text", + "data": "\n\n\t\t\t\t" + }, { "start": 6, "end": 36, @@ -23,4 +30,4 @@ }, "css": null, "js": null -} +} \ No newline at end of file diff --git a/test/parser/samples/yield/output.json b/test/parser/samples/yield/output.json index 227da6561f..2f98abe91f 100644 --- a/test/parser/samples/yield/output.json +++ b/test/parser/samples/yield/output.json @@ -1,14 +1,17 @@ { - "html": { - "start": 0, - "end": 9, - "type": "Fragment", - "children": [ - { - "start": 0, - "end": 9, - "type": "YieldTag" - } - ] - } -} + "hash": 3659433152, + "html": { + "start": 0, + "end": 9, + "type": "Fragment", + "children": [ + { + "start": 0, + "end": 9, + "type": "YieldTag" + } + ] + }, + "css": null, + "js": null +} \ No newline at end of file diff --git a/test/parser/update.js b/test/parser/update.js new file mode 100644 index 0000000000..7c8e89ab76 --- /dev/null +++ b/test/parser/update.js @@ -0,0 +1,13 @@ +// this file will replace all the expected.js and expected-bundle.js files with +// their _actual equivalents. Only use it when you're sure that you haven't +// broken anything! +const fs = require("fs"); +const glob = require("glob"); + +glob.sync("samples/*/_actual.json", { cwd: __dirname }).forEach(file => { + const actual = fs.readFileSync(`${__dirname}/${file}`, "utf-8"); + fs.writeFileSync( + `${__dirname}/${file.replace("_actual", "output")}`, + actual + ); +});