mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Fixes #218 - addNestedVariable
This commit is contained in:
parent
2ce5493c9a
commit
c1c56929e9
@ -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) {
|
||||
|
||||
20
test/fixtures/compiler/autotest/addNestedVariable/expected.js
vendored
Normal file
20
test/fixtures/compiler/autotest/addNestedVariable/expected.js
vendored
Normal 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);
|
||||
1
test/fixtures/compiler/autotest/addNestedVariable/template.marko
vendored
Normal file
1
test/fixtures/compiler/autotest/addNestedVariable/template.marko
vendored
Normal file
@ -0,0 +1 @@
|
||||
test-addNestedVariable - Hello ${foo}!
|
||||
4
test/fixtures/taglib/scanned-tags/test-addNestedVariable/marko-tag.json
vendored
Normal file
4
test/fixtures/taglib/scanned-tags/test-addNestedVariable/marko-tag.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"renderer": "./renderer.js",
|
||||
"transformer": "./transformer.js"
|
||||
}
|
||||
1
test/fixtures/taglib/scanned-tags/test-addNestedVariable/renderer.js
vendored
Normal file
1
test/fixtures/taglib/scanned-tags/test-addNestedVariable/renderer.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
module.exports = function(input, out) {};
|
||||
3
test/fixtures/taglib/scanned-tags/test-addNestedVariable/transformer.js
vendored
Normal file
3
test/fixtures/taglib/scanned-tags/test-addNestedVariable/transformer.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
module.exports = function transform(el, context) {
|
||||
el.addNestedVariable('foo');
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user