mirror of
https://github.com/bower/bower.git
synced 2026-01-14 08:47:54 -05:00
colors.js has serious deficiencies like extending String.prototype which can cause all kinds of problems. Two modules using colors.js can conflict with each others, and it infects imported child modules. It's also better to explicit. [chalk](https://github.com/sindresorhus/chalk)
45 lines
993 B
JavaScript
45 lines
993 B
JavaScript
var path = require('path');
|
|
var fs = require('graceful-fs');
|
|
var Handlebars = require('handlebars');
|
|
var mout = require('mout');
|
|
var helpers = require('../../templates/helpers');
|
|
|
|
var templatesDir = path.resolve(__dirname, '../../templates');
|
|
var cache = {};
|
|
|
|
// Register helpers
|
|
mout.object.forOwn(helpers, function (register) {
|
|
register(Handlebars);
|
|
});
|
|
|
|
function render(name, data, escape) {
|
|
var contents;
|
|
|
|
// Check if already compiled
|
|
if (cache[name]) {
|
|
return cache[name](data);
|
|
}
|
|
|
|
// Otherwise, read the file, compile and cache
|
|
contents = fs.readFileSync(path.join(templatesDir, name)).toString();
|
|
cache[name] = Handlebars.compile(contents, {
|
|
noEscape: !escape
|
|
});
|
|
|
|
// Call the function again
|
|
return render(name, data, escape);
|
|
}
|
|
|
|
function exists(name) {
|
|
if (cache[name]) {
|
|
return true;
|
|
}
|
|
|
|
return fs.existsSync(path.join(templatesDir, name));
|
|
}
|
|
|
|
module.exports = {
|
|
render: render,
|
|
exists: exists
|
|
};
|