Fixes #218 - addNestedVariable

This commit is contained in:
Patrick Steele-Idem 2016-02-04 14:50:34 -07:00
parent 2ce5493c9a
commit c1c56929e9
6 changed files with 42 additions and 1 deletions

View File

@ -4,6 +4,7 @@ var HtmlElement = require('./HtmlElement');
var removeDashes = require('../util/removeDashes');
var removeEscapeFunctions = require('../util/removeEscapeFunctions');
var safeVarName = require('../util/safeVarName');
var ok = require('assert').ok;
function getNestedTagParentNode(nestedTagNode, parentTagName) {
var currentNode = nestedTagNode.parentNode;
@ -52,6 +53,12 @@ function getNestedVariables(elNode, tagDef, codegen) {
variableNames.push(codegen.builder.identifier(varName));
});
if (elNode.additionalNestedVars.length) {
elNode.additionalNestedVars.forEach((varName) => {
variableNames.push(codegen.builder.identifier(varName));
});
}
return variableNames;
}
@ -132,7 +139,12 @@ class CustomTag extends HtmlElement {
super(el);
this.type = 'CustomTag';
this.tagDef = tagDef;
// console.log(module.id, this.type);
this.additionalNestedVars = [];
}
addNestedVariable(name) {
ok(name, '"name" is required');
this.additionalNestedVars.push(name);
}
generateCode(codegen) {

View File

@ -0,0 +1,20 @@
function create(__helpers) {
var str = __helpers.s,
empty = __helpers.e,
notEmpty = __helpers.ne,
escapeXml = __helpers.x,
__loadTag = __helpers.t,
test_addNestedVariable = __loadTag(require("../../../taglib/scanned-tags/test-addNestedVariable/renderer"));
return function render(data, out) {
test_addNestedVariable({
renderBody: function renderBody(out, foo) {
out.w("Hello " +
escapeXml(foo) +
"!");
}
}, out);
};
}
(module.exports = require("marko").c(__filename)).c(create);

View File

@ -0,0 +1 @@
test-addNestedVariable - Hello ${foo}!

View File

@ -0,0 +1,4 @@
{
"renderer": "./renderer.js",
"transformer": "./transformer.js"
}

View File

@ -0,0 +1 @@
module.exports = function(input, out) {};

View File

@ -0,0 +1,3 @@
module.exports = function transform(el, context) {
el.addNestedVariable('foo');
};