From fd6da21e48d539ae3a56202d19a580fcea8db0d6 Mon Sep 17 00:00:00 2001 From: Patrick Steele-Idem Date: Mon, 11 Jan 2016 10:35:34 -0700 Subject: [PATCH] Marko v3: Don't remove core directive attributes if they don't have an arg --- taglibs/core/core-transformer.js | 21 ++++++++++--------- .../label-for/expected.html | 0 .../label-for/template.marko | 0 .../label-for/test.js | 0 4 files changed, 11 insertions(+), 10 deletions(-) rename test/fixtures/render/{autotest-pending => autotest}/label-for/expected.html (100%) rename test/fixtures/render/{autotest-pending => autotest}/label-for/template.marko (100%) rename test/fixtures/render/{autotest-pending => autotest}/label-for/test.js (100%) diff --git a/taglibs/core/core-transformer.js b/taglibs/core/core-transformer.js index 70c9054c3..c45a51d70 100644 --- a/taglibs/core/core-transformer.js +++ b/taglibs/core/core-transformer.js @@ -7,7 +7,7 @@ var coreAttrHandlers = [ 'for', function(attr, node) { var forArgument = attr.argument; if (!forArgument) { - return; + return false; } var loopNode = createLoopNode(forArgument, null, this.builder); @@ -22,7 +22,7 @@ var coreAttrHandlers = [ 'if', function(attr, node) { var ifArgument = attr.argument; if (!ifArgument) { - return; + return false; } var ifNode = this.builder.ifStatement(ifArgument); //Surround the existing node with an "If" node @@ -33,7 +33,7 @@ var coreAttrHandlers = [ 'unless', function(attr, node) { var ifArgument = attr.argument; if (!ifArgument) { - return; + return false; } ifArgument = this.builder.negate(ifArgument); var ifNode = this.builder.ifStatement(ifArgument); @@ -45,7 +45,7 @@ var coreAttrHandlers = [ 'else-if', function(attr, node) { var elseIfArgument = attr.argument; if (!elseIfArgument) { - return; + return false; } var elseIfNode = this.builder.elseIfStatement(elseIfArgument); //Surround the existing node with an "ElseIf" node @@ -63,7 +63,7 @@ var coreAttrHandlers = [ 'body-only-if', function(attr, node, el) { var condition = attr.argument; if (!condition) { - return; + return false; } el.setBodyOnlyIf(condition); @@ -111,15 +111,16 @@ module.exports = function transform(el, context) { let attrName = attr.name; var attrTransformerFunc = attributeTransformers[attrName]; if (attrTransformerFunc) { - el.removeAttribute(attrName); - if (!attributeTransfomer) { attributeTransfomer = new AttributeTransformer(context, el); } var newNode = attributeTransfomer[attrName](attr, node, el); - if (newNode) { - newNode.pos = node.pos; - node = newNode; + if (newNode !== false) { + el.removeAttribute(attrName); + if (newNode) { + newNode.pos = node.pos; + node = newNode; + } } } }); diff --git a/test/fixtures/render/autotest-pending/label-for/expected.html b/test/fixtures/render/autotest/label-for/expected.html similarity index 100% rename from test/fixtures/render/autotest-pending/label-for/expected.html rename to test/fixtures/render/autotest/label-for/expected.html diff --git a/test/fixtures/render/autotest-pending/label-for/template.marko b/test/fixtures/render/autotest/label-for/template.marko similarity index 100% rename from test/fixtures/render/autotest-pending/label-for/template.marko rename to test/fixtures/render/autotest/label-for/template.marko diff --git a/test/fixtures/render/autotest-pending/label-for/test.js b/test/fixtures/render/autotest/label-for/test.js similarity index 100% rename from test/fixtures/render/autotest-pending/label-for/test.js rename to test/fixtures/render/autotest/label-for/test.js