Fixes #65 - Generated variable name is an empty string in some cases

This commit is contained in:
Patrick Steele-Idem 2015-04-21 11:38:31 -06:00
parent 7562e7eca1
commit 0bed9b258a
10 changed files with 32 additions and 3 deletions

View File

@ -18,12 +18,13 @@ var extend = require('raptor-util').extend;
var forEachEntry = require('raptor-util').forEachEntry;
var stringify = require('raptor-json/stringify');
var isObjectEmpty = require('raptor-util/isObjectEmpty');
var requireVarName = require('./requireVarName');
function addHandlerVar(template, renderer) {
var handlerVars = template._handlerVars || (template._handlerVars = {});
var handlerVar = handlerVars[renderer];
if (!handlerVar) {
handlerVar = renderer.replace(/[.\-\/\\]/g, '_').replace(/^[_]+/g, '');
handlerVar = requireVarName(renderer, template.dirname);
handlerVar = template.addStaticVar(handlerVar, '__renderer(require(' + stringify(renderer) + '))');
handlerVars[renderer] = handlerVar;
}

View File

@ -0,0 +1,5 @@
{
"browser": {
"./requireVarName.js": "./requireVarName-browser.js"
}
}

View File

@ -0,0 +1,3 @@
module.exports = function(target, from) {
return target;
};

View File

@ -0,0 +1,8 @@
var resolveFrom = require('resolve-from');
var nodePath = require('path');
module.exports = function(target, from) {
var resolved = resolveFrom(from, target);
resolved = nodePath.relative(from, resolved);
return resolved;
};

3
test/fixtures/index.js vendored Normal file
View File

@ -0,0 +1,3 @@
module.exports = function(input, out) {
out.write('root-renderer: Hello ' + input.name + '!');
};

View File

@ -96,6 +96,12 @@
},
"test-template-tag-dynamic-attributes": {
"template": "./taglib/hello.marko"
},
"test-root-renderer": {
"renderer": "./",
"attributes": {
"name": "string"
}
}
},
"tags-dir": "./taglib/scanned-tags",

View File

@ -3,12 +3,12 @@ exports.create = function(__helpers) {
empty = __helpers.e,
notEmpty = __helpers.ne,
__renderer = __helpers.r,
taglib_hello_renderer = __renderer(require("../../../taglib/hello-renderer")),
_________taglib_hello_renderer_js = __renderer(require("../../../taglib/hello-renderer")),
__tag = __helpers.t;
return function render(data, out) {
__tag(out,
taglib_hello_renderer,
_________taglib_hello_renderer_js,
{
"name": "World"
});

View File

@ -0,0 +1 @@
root-renderer: Hello Frank!

View File

@ -0,0 +1 @@
<test-root-renderer name="Frank"/>

View File

@ -0,0 +1 @@
exports.templateData = {};