Marko v3: Re-introduced <unless> tag support

This commit is contained in:
Patrick Steele-Idem 2016-01-11 11:17:28 -07:00
parent b3f0977c2e
commit 5d123c2013
5 changed files with 29 additions and 6 deletions

View File

@ -27,6 +27,9 @@
"code-generator": "./template-init-tag",
"body": "static-text"
},
"<unless>": {
"node-factory": "./unless-tag"
},
"<var>": {
"node-factory": "./var-tag"
},

View File

@ -0,0 +1,20 @@
module.exports = function nodeFactory(elNode, context) {
var argument = elNode.argument;
if (!argument) {
context.addError(elNode, 'Invalid <unless> tag. Argument is missing. Example; <unless(foo === true)>');
return elNode;
}
var attributes = elNode.attributes;
if (attributes.length) {
context.addError(elNode, 'Invalid <unless> tag. Attributes not allowed.');
return;
}
var builder = context.builder;
var test = builder.parseExpression(argument);
return context.builder.ifStatement(builder.negate(test));
};

View File

@ -1,31 +1,31 @@
<unless test="true">
<unless(true)>
A
</unless>
<else>
B
</else>
,
<unless test="false">
<unless(false)>
A
</unless>
<else>
B
</else>
,
<unless test="false">
<unless(false)>
A
</unless>
<else-if test="false">
<else-if(false)>
B
</else-if>
<else>
C
</else>
,
<div unless="false">
<div unless(false)>
A
</div>
<div else-if="false">
<div else-if(false)>
B
</div>
<div else>