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