Marko v3: Don't remove core directive attributes if they don't have an arg

This commit is contained in:
Patrick Steele-Idem 2016-01-11 10:35:34 -07:00
parent 5b1e3111c6
commit fd6da21e48
4 changed files with 11 additions and 10 deletions

View File

@ -7,7 +7,7 @@ var coreAttrHandlers = [
'for', function(attr, node) { 'for', function(attr, node) {
var forArgument = attr.argument; var forArgument = attr.argument;
if (!forArgument) { if (!forArgument) {
return; return false;
} }
var loopNode = createLoopNode(forArgument, null, this.builder); var loopNode = createLoopNode(forArgument, null, this.builder);
@ -22,7 +22,7 @@ var coreAttrHandlers = [
'if', function(attr, node) { 'if', function(attr, node) {
var ifArgument = attr.argument; var ifArgument = attr.argument;
if (!ifArgument) { if (!ifArgument) {
return; return false;
} }
var ifNode = this.builder.ifStatement(ifArgument); var ifNode = this.builder.ifStatement(ifArgument);
//Surround the existing node with an "If" node //Surround the existing node with an "If" node
@ -33,7 +33,7 @@ var coreAttrHandlers = [
'unless', function(attr, node) { 'unless', function(attr, node) {
var ifArgument = attr.argument; var ifArgument = attr.argument;
if (!ifArgument) { if (!ifArgument) {
return; return false;
} }
ifArgument = this.builder.negate(ifArgument); ifArgument = this.builder.negate(ifArgument);
var ifNode = this.builder.ifStatement(ifArgument); var ifNode = this.builder.ifStatement(ifArgument);
@ -45,7 +45,7 @@ var coreAttrHandlers = [
'else-if', function(attr, node) { 'else-if', function(attr, node) {
var elseIfArgument = attr.argument; var elseIfArgument = attr.argument;
if (!elseIfArgument) { if (!elseIfArgument) {
return; return false;
} }
var elseIfNode = this.builder.elseIfStatement(elseIfArgument); var elseIfNode = this.builder.elseIfStatement(elseIfArgument);
//Surround the existing node with an "ElseIf" node //Surround the existing node with an "ElseIf" node
@ -63,7 +63,7 @@ var coreAttrHandlers = [
'body-only-if', function(attr, node, el) { 'body-only-if', function(attr, node, el) {
var condition = attr.argument; var condition = attr.argument;
if (!condition) { if (!condition) {
return; return false;
} }
el.setBodyOnlyIf(condition); el.setBodyOnlyIf(condition);
@ -111,15 +111,16 @@ module.exports = function transform(el, context) {
let attrName = attr.name; let attrName = attr.name;
var attrTransformerFunc = attributeTransformers[attrName]; var attrTransformerFunc = attributeTransformers[attrName];
if (attrTransformerFunc) { if (attrTransformerFunc) {
el.removeAttribute(attrName);
if (!attributeTransfomer) { if (!attributeTransfomer) {
attributeTransfomer = new AttributeTransformer(context, el); attributeTransfomer = new AttributeTransformer(context, el);
} }
var newNode = attributeTransfomer[attrName](attr, node, el); var newNode = attributeTransfomer[attrName](attr, node, el);
if (newNode) { if (newNode !== false) {
newNode.pos = node.pos; el.removeAttribute(attrName);
node = newNode; if (newNode) {
newNode.pos = node.pos;
node = newNode;
}
} }
} }
}); });