mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Marko v3: Re-introduced <unless> tag support
This commit is contained in:
parent
b3f0977c2e
commit
5d123c2013
@ -27,6 +27,9 @@
|
||||
"code-generator": "./template-init-tag",
|
||||
"body": "static-text"
|
||||
},
|
||||
"<unless>": {
|
||||
"node-factory": "./unless-tag"
|
||||
},
|
||||
"<var>": {
|
||||
"node-factory": "./var-tag"
|
||||
},
|
||||
|
||||
20
taglibs/core/unless-tag.js
Normal file
20
taglibs/core/unless-tag.js
Normal 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));
|
||||
};
|
||||
@ -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>
|
||||
Loading…
x
Reference in New Issue
Block a user