Marko v3: Reintroduced support for setting flags on elements from attr def

This commit is contained in:
Patrick Steele-Idem 2016-02-05 16:44:48 -07:00
parent fb9aaae25b
commit 410bb80ede
6 changed files with 27 additions and 1 deletions

View File

@ -273,6 +273,10 @@ class CompileContext {
return;
}
if (attrDef.setFlag) {
node.setFlag(attrDef.setFlag);
}
attr.def = attrDef;
foundAttrs[attrName] = true;

View File

@ -0,0 +1 @@
<div><span test-set-flag-foo="bar" FLAG_SET>Has flag</span><span>Does not have flag</span></div>

View File

@ -0,0 +1,11 @@
{
"<*>": {
"@test-set-flag-*": {
"pattern": true,
"type": "string",
"preserve-name": true,
"set-flag": "testFlag"
},
"transformer": "./transformer.js"
}
}

View File

@ -0,0 +1,4 @@
<div>
<span test-set-flag-foo="bar">Has flag</span>
<span>Does not have flag</span>
</div>

View File

@ -0,0 +1,5 @@
module.exports = function transform(el, context) {
if (el.isFlagSet('testFlag')) {
el.setAttributeValue('FLAG_SET', context.builder.literalTrue());
}
};

View File

@ -4,6 +4,7 @@ chai.config.includeStack = true;
var path = require('path');
var marko = require('../');
var autotest = require('./autotest');
var fs = require('fs');
require('../node-require').install();
@ -16,7 +17,7 @@ describe('render', function() {
var templatePath = path.join(dir, 'template.marko');
var mainPath = path.join(dir, 'test.js');
var main = require(mainPath);
var main = fs.existsSync(mainPath) ? require(mainPath) : {};
if (main.checkError) {
var e;