diff --git a/packages/pug-code-gen/index.js b/packages/pug-code-gen/index.js index 1c829cf33..613ce87cf 100644 --- a/packages/pug-code-gen/index.js +++ b/packages/pug-code-gen/index.js @@ -1219,21 +1219,14 @@ Compiler.prototype = { }, visitEachOf: function(each) { - this.buf.push( - '' + - '// iterate ' + - each.obj + - '\n' + - 'for (const ' + - each.val + - ' of ' + - each.obj + - ') {\n' - ); - this.visit(each.block, each); + const forOfBlock = this.visit(each.block, each); + const forOf = t.forOfStatement( + t.variableDeclaration('var', [ + t.variableDeclarator(t.identifier(each.val)) + ]), t.identifier(each.obj), t.blockStatement(forOfBlock)); + return [ forOf ] - this.buf.push('}\n'); }, /** diff --git a/packages/pug-lexer/test/__snapshots__/index.test.js.snap b/packages/pug-lexer/test/__snapshots__/index.test.js.snap index f55774a2a..fda93f048 100644 --- a/packages/pug-lexer/test/__snapshots__/index.test.js.snap +++ b/packages/pug-lexer/test/__snapshots__/index.test.js.snap @@ -326,7 +326,7 @@ Array [ "left": Object { "end": 8, "extra": Object { - "raw": "\'/user/\'", + "raw": "'/user/'", "rawValue": "/user/", }, "loc": Object { @@ -394,7 +394,7 @@ Array [ "ast": Object { "end": 8, "extra": Object { - "raw": "\'button\'", + "raw": "'button'", "rawValue": "button", }, "loc": Object { @@ -490,7 +490,7 @@ Array [ "left": Object { "end": 8, "extra": Object { - "raw": "\'/user/\'", + "raw": "'/user/'", "rawValue": "/user/", }, "loc": Object { @@ -558,7 +558,7 @@ Array [ "ast": Object { "end": 8, "extra": Object { - "raw": "\'button\'", + "raw": "'button'", "rawValue": "button", }, "loc": Object { @@ -652,7 +652,7 @@ Array [ "ast": Object { "end": 8, "extra": Object { - "raw": "\'answer\'", + "raw": "'answer'", "rawValue": "answer", }, "loc": Object { @@ -798,7 +798,7 @@ Array [ Object { "end": 9, "extra": Object { - "raw": "\'class1\'", + "raw": "'class1'", "rawValue": "class1", }, "loc": Object { @@ -818,7 +818,7 @@ Array [ Object { "end": 19, "extra": Object { - "raw": "\'class2\'", + "raw": "'class2'", "rawValue": "class2", }, "loc": Object { @@ -944,7 +944,7 @@ Array [ Object { "end": 9, "extra": Object { - "raw": "\'class1\'", + "raw": "'class1'", "rawValue": "class1", }, "loc": Object { @@ -964,7 +964,7 @@ Array [ Object { "end": 19, "extra": Object { - "raw": "\'class2\'", + "raw": "'class2'", "rawValue": "class2", }, "loc": Object { @@ -1075,7 +1075,7 @@ Array [ "left": Object { "end": 8, "extra": Object { - "raw": "\'/user/\'", + "raw": "'/user/'", "rawValue": "/user/", }, "loc": Object { @@ -1143,7 +1143,7 @@ Array [ "ast": Object { "end": 8, "extra": Object { - "raw": "\'button\'", + "raw": "'button'", "rawValue": "button", }, "loc": Object { @@ -1239,7 +1239,7 @@ Array [ "left": Object { "end": 8, "extra": Object { - "raw": "\'/user/\'", + "raw": "'/user/'", "rawValue": "/user/", }, "loc": Object { @@ -1307,7 +1307,7 @@ Array [ "ast": Object { "end": 8, "extra": Object { - "raw": "\'button\'", + "raw": "'button'", "rawValue": "button", }, "loc": Object { @@ -1401,7 +1401,7 @@ Array [ "ast": Object { "end": 8, "extra": Object { - "raw": "\'answer\'", + "raw": "'answer'", "rawValue": "answer", }, "loc": Object { @@ -1547,7 +1547,7 @@ Array [ Object { "end": 9, "extra": Object { - "raw": "\'class1\'", + "raw": "'class1'", "rawValue": "class1", }, "loc": Object { @@ -1567,7 +1567,7 @@ Array [ Object { "end": 19, "extra": Object { - "raw": "\'class2\'", + "raw": "'class2'", "rawValue": "class2", }, "loc": Object { @@ -1693,7 +1693,7 @@ Array [ Object { "end": 9, "extra": Object { - "raw": "\'class1\'", + "raw": "'class1'", "rawValue": "class1", }, "loc": Object { @@ -1713,7 +1713,7 @@ Array [ Object { "end": 19, "extra": Object { - "raw": "\'class2\'", + "raw": "'class2'", "rawValue": "class2", }, "loc": Object { @@ -2185,6 +2185,26 @@ Array [ "val": true, }, Object { + "ast": Object { + "end": 7, + "extra": Object { + "raw": "\\"after\\"", + "rawValue": "after", + }, + "loc": Object { + "end": Object { + "column": 7, + "line": 1, + }, + "start": Object { + "column": 0, + "line": 1, + }, + }, + "start": 0, + "type": "StringLiteral", + "value": "after", + }, "loc": Object { "end": Object { "column": 28, @@ -2259,6 +2279,26 @@ Array [ "type": "start-attributes", }, Object { + "ast": Object { + "end": 8, + "extra": Object { + "raw": "\\"before\\"", + "rawValue": "before", + }, + "loc": Object { + "end": Object { + "column": 8, + "line": 1, + }, + "start": Object { + "column": 0, + "line": 1, + }, + }, + "start": 0, + "type": "StringLiteral", + "value": "before", + }, "loc": Object { "end": Object { "column": 20, @@ -2350,6 +2390,26 @@ Array [ "type": "start-attributes", }, Object { + "ast": Object { + "end": 8, + "extra": Object { + "raw": "\\"before\\"", + "rawValue": "before", + }, + "loc": Object { + "end": Object { + "column": 8, + "line": 1, + }, + "start": Object { + "column": 0, + "line": 1, + }, + }, + "start": 0, + "type": "StringLiteral", + "value": "before", + }, "loc": Object { "end": Object { "column": 20, @@ -2384,6 +2444,26 @@ Array [ "val": true, }, Object { + "ast": Object { + "end": 7, + "extra": Object { + "raw": "\\"after\\"", + "rawValue": "after", + }, + "loc": Object { + "end": Object { + "column": 7, + "line": 1, + }, + "start": Object { + "column": 0, + "line": 1, + }, + }, + "start": 0, + "type": "StringLiteral", + "value": "after", + }, "loc": Object { "end": Object { "column": 44, @@ -2480,7 +2560,7 @@ Array [ "ast": Object { "end": 10, "extra": Object { - "raw": "\'/contact\'", + "raw": "'/contact'", "rawValue": "/contact", }, "loc": Object { @@ -2589,7 +2669,7 @@ Array [ "ast": Object { "end": 7, "extra": Object { - "raw": "\'/save\'", + "raw": "'/save'", "rawValue": "/save", }, "loc": Object { @@ -2821,7 +2901,7 @@ Array [ "ast": Object { "end": 15, "extra": Object { - "raw": "\'foo, bar, baz\'", + "raw": "'foo, bar, baz'", "rawValue": "foo, bar, baz", }, "loc": Object { @@ -2952,7 +3032,7 @@ Array [ "ast": Object { "end": 9, "extra": Object { - "raw": "\'((foo))\'", + "raw": "'((foo))'", "rawValue": "((foo))", }, "loc": Object { @@ -3170,7 +3250,7 @@ Array [ "ast": Object { "end": 5, "extra": Object { - "raw": "\'foo\'", + "raw": "'foo'", "rawValue": "foo", }, "loc": Object { @@ -3313,7 +3393,7 @@ Array [ "ast": Object { "end": 5, "extra": Object { - "raw": "\'bar\'", + "raw": "'bar'", "rawValue": "bar", }, "loc": Object { @@ -3422,7 +3502,7 @@ Array [ "ast": Object { "end": 8, "extra": Object { - "raw": "\"class:\"", + "raw": "\\"class:\\"", "rawValue": "class:", }, "loc": Object { @@ -3516,8 +3596,8 @@ Array [ "ast": Object { "end": 6, "extra": Object { - "raw": "\'\\\\S+\'", - "rawValue": "\\S+", + "raw": "'\\\\\\\\S+'", + "rawValue": "\\\\S+", }, "loc": Object { "end": Object { @@ -3531,7 +3611,7 @@ Array [ }, "start": 0, "type": "StringLiteral", - "value": "\\S+", + "value": "\\\\S+", }, "loc": Object { "end": Object { @@ -3610,7 +3690,7 @@ Array [ "ast": Object { "end": 10, "extra": Object { - "raw": "\'/contact\'", + "raw": "'/contact'", "rawValue": "/contact", }, "loc": Object { @@ -3719,7 +3799,7 @@ Array [ "ast": Object { "end": 7, "extra": Object { - "raw": "\'/save\'", + "raw": "'/save'", "rawValue": "/save", }, "loc": Object { @@ -3951,7 +4031,7 @@ Array [ "ast": Object { "end": 15, "extra": Object { - "raw": "\'foo, bar, baz\'", + "raw": "'foo, bar, baz'", "rawValue": "foo, bar, baz", }, "loc": Object { @@ -4082,7 +4162,7 @@ Array [ "ast": Object { "end": 9, "extra": Object { - "raw": "\'((foo))\'", + "raw": "'((foo))'", "rawValue": "((foo))", }, "loc": Object { @@ -4300,7 +4380,7 @@ Array [ "ast": Object { "end": 5, "extra": Object { - "raw": "\'foo\'", + "raw": "'foo'", "rawValue": "foo", }, "loc": Object { @@ -4443,7 +4523,7 @@ Array [ "ast": Object { "end": 5, "extra": Object { - "raw": "\'bar\'", + "raw": "'bar'", "rawValue": "bar", }, "loc": Object { @@ -4552,7 +4632,7 @@ Array [ "ast": Object { "end": 8, "extra": Object { - "raw": "\"class:\"", + "raw": "\\"class:\\"", "rawValue": "class:", }, "loc": Object { @@ -4646,8 +4726,8 @@ Array [ "ast": Object { "end": 6, "extra": Object { - "raw": "\'\\\\S+\'", - "rawValue": "\\S+", + "raw": "'\\\\\\\\S+'", + "rawValue": "\\\\S+", }, "loc": Object { "end": Object { @@ -4661,7 +4741,7 @@ Array [ }, "start": 0, "type": "StringLiteral", - "value": "\\S+", + "value": "\\\\S+", }, "loc": Object { "end": Object { @@ -4740,7 +4820,7 @@ Array [ "ast": Object { "end": 6, "extra": Object { - "raw": "\"true\"", + "raw": "\\"true\\"", "rawValue": "true", }, "loc": Object { @@ -5583,7 +5663,7 @@ Array [ "ast": Object { "end": 5, "extra": Object { - "raw": "\'foo\'", + "raw": "'foo'", "rawValue": "foo", }, "loc": Object { @@ -5620,7 +5700,7 @@ Array [ "ast": Object { "end": 5, "extra": Object { - "raw": "\"bar\"", + "raw": "\\"bar\\"", "rawValue": "bar", }, "loc": Object { @@ -5714,7 +5794,7 @@ Array [ "ast": Object { "end": 5, "extra": Object { - "raw": "\'foo\'", + "raw": "'foo'", "rawValue": "foo", }, "loc": Object { @@ -5751,7 +5831,7 @@ Array [ "ast": Object { "end": 5, "extra": Object { - "raw": "\'bar\'", + "raw": "'bar'", "rawValue": "bar", }, "loc": Object { @@ -5864,7 +5944,7 @@ Array [ "ast": Object { "end": 17, "extra": Object { - "raw": "\'text/x-template\'", + "raw": "'text/x-template'", "rawValue": "text/x-template", }, "loc": Object { @@ -5959,7 +6039,7 @@ Array [ "ast": Object { "end": 21, "extra": Object { - "raw": "\'user-<%= user.id %>\'", + "raw": "'user-<%= user.id %>'", "rawValue": "user-<%= user.id %>", }, "loc": Object { @@ -6404,7 +6484,7 @@ Array [ "ast": Object { "end": 6, "extra": Object { - "raw": "\'tobi\'", + "raw": "'tobi'", "rawValue": "tobi", }, "loc": Object { @@ -6545,8 +6625,8 @@ Array [ "value": Object { "end": 23, "extra": Object { - "raw": "\"Let\'s rock!\"", - "rawValue": "Let\'s rock!", + "raw": "\\"Let's rock!\\"", + "rawValue": "Let's rock!", }, "loc": Object { "end": Object { @@ -6560,7 +6640,7 @@ Array [ }, "start": 10, "type": "StringLiteral", - "value": "Let\'s rock!", + "value": "Let's rock!", }, }, ], @@ -6691,7 +6771,7 @@ Array [ "value": Object { "end": 39, "extra": Object { - "raw": "\"a quote: " this & that\"", + "raw": "\\"a quote: " this & that\\"", "rawValue": "a quote: " this & that", }, "loc": Object { @@ -7775,7 +7855,7 @@ Array [ "ast": Object { "end": 3, "extra": Object { - "raw": "\'#\'", + "raw": "'#'", "rawValue": "#", }, "loc": Object { @@ -7913,7 +7993,7 @@ Array [ "ast": Object { "end": 3, "extra": Object { - "raw": "\'#\'", + "raw": "'#'", "rawValue": "#", }, "loc": Object { @@ -8889,7 +8969,7 @@ Array [ "ast": Object { "end": 6, "extra": Object { - "raw": "\'utf8\'", + "raw": "'utf8'", "rawValue": "utf8", }, "loc": Object { @@ -10058,7 +10138,7 @@ Array [ "ast": Object { "end": 7, "extra": Object { - "raw": "\'Tim:G\'", + "raw": "'Tim:G'", "rawValue": "Tim:G", }, "loc": Object { @@ -10198,7 +10278,7 @@ Array [ "value": Object { "end": 9, "extra": Object { - "raw": "\'g\'", + "raw": "'g'", "rawValue": "g", }, "loc": Object { @@ -10901,7 +10981,7 @@ Array [ Object { "end": 6, "extra": Object { - "raw": "\'foo\'", + "raw": "'foo'", "rawValue": "foo", }, "loc": Object { @@ -10921,7 +11001,7 @@ Array [ Object { "end": 13, "extra": Object { - "raw": "\'bar\'", + "raw": "'bar'", "rawValue": "bar", }, "loc": Object { @@ -10941,7 +11021,7 @@ Array [ Object { "end": 20, "extra": Object { - "raw": "\'baz\'", + "raw": "'baz'", "rawValue": "baz", }, "loc": Object { @@ -11065,7 +11145,7 @@ Array [ "ast": Object { "end": 5, "extra": Object { - "raw": "\'bar\'", + "raw": "'bar'", "rawValue": "bar", }, "loc": Object { @@ -11569,7 +11649,7 @@ Array [ "ast": Object { "end": 2, "extra": Object { - "raw": "\'\'", + "raw": "''", "rawValue": "", }, "loc": Object { @@ -12608,7 +12688,7 @@ Array [ "ast": Object { "end": 8, "extra": Object { - "raw": "\'nested\'", + "raw": "'nested'", "rawValue": "nested", }, "loc": Object { @@ -12658,7 +12738,7 @@ Array [ "ast": Object { "end": 7, "extra": Object { - "raw": "\'works\'", + "raw": "'works'", "rawValue": "works", }, "loc": Object { @@ -13276,7 +13356,7 @@ Array [ "ast": Object { "end": 10, "extra": Object { - "raw": "\'