Skip to content

Commit

Permalink
updated tmpl.js for require.js optimizer
Browse files Browse the repository at this point in the history
  • Loading branch information
aaronj1335 committed Jul 18, 2012
1 parent f6d46cc commit af29b98
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 16 deletions.
2 changes: 2 additions & 0 deletions .gitignore
@@ -1,2 +1,4 @@
.test
node_modules
src/require/test/test_tmpl-*.js
src/require/test/test_tmpl-*.css
5 changes: 5 additions & 0 deletions app.build.js
@@ -0,0 +1,5 @@
({
modules: [
{name: './require/test/test_tmpl'}
]
})
47 changes: 31 additions & 16 deletions src/require/tmpl.js
Expand Up @@ -11,25 +11,40 @@
// modified to work as a require.js plugin for storediq's client-side and build
// infrastructure
define(function() {
var compile = function(str) {
var value = "return (function(data) {var out = ''; out+=" + "'" +
str.replace(/[\r\t\n]/g, " ")
.replace(/'(?=[^%]*%>)/g,"\t")
.split("'").join("\\'")
.split("\t").join("'")
.replace(/<%=(.+?)%>/g, "'; out += $1; out += '")
.split("<%").join("';")
.split("%>").join("out+='") +
"'; return out;}).call(typeof ctx !== 'undefined'? ctx : this, data);";
return new Function('data', 'ctx', value);
};
var pluginMap = {},
compile = function(str) {
var value = "return (function(data) {var out = ''; out+=" + "'" +
str.replace(/[\r\t\n]/g, " ")
.replace(/'(?=[^%]*%>)/g,"\t")
.split("'").join("\\'")
.split("\t").join("'")
.replace(/<%=(.+?)%>/g, "'; out += $1; out += '")
.split("<%").join("';")
.split("%>").join("out+='") +
"'; return out;}).call(typeof ctx !== 'undefined'? ctx : this, data);";
return new Function('data', 'ctx', value);
};

return {
load: function(name, req, load) {
var url = req.toUrl(name);
req(['text!' + req.toUrl(name)], function(templateText) {
load(compile(templateText));
});
if (require && require.nodeRequire) {
var fs = require.nodeRequire('fs'),
tmpl = fs.readFileSync(req.toUrl(name), 'utf8'),
compiled = compile(tmpl),
module = compiled.toString();
pluginMap[name] = module;
load();
} else {
req(['text!' + req.toUrl(name)], function(templateText) {
load(compile(templateText));
});
}
},

write: function(pluginName, moduleName, write) {
var module = "define('" + pluginName + "!" + moduleName +
"', function () { return " + pluginMap[moduleName] + ";});\n";
write(module);
}
};
});
Expand Down

0 comments on commit af29b98

Please sign in to comment.