template.js 993 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. var path = require('path');
  2. var fs = require('graceful-fs');
  3. var Handlebars = require('handlebars');
  4. var mout = require('mout');
  5. var helpers = require('../../templates/helpers');
  6. var templatesDir = path.resolve(__dirname, '../../templates');
  7. var cache = {};
  8. // Register helpers
  9. mout.object.forOwn(helpers, function (register) {
  10. register(Handlebars);
  11. });
  12. function render(name, data, escape) {
  13. var contents;
  14. // Check if already compiled
  15. if (cache[name]) {
  16. return cache[name](data);
  17. }
  18. // Otherwise, read the file, compile and cache
  19. contents = fs.readFileSync(path.join(templatesDir, name)).toString();
  20. cache[name] = Handlebars.compile(contents, {
  21. noEscape: !escape
  22. });
  23. // Call the function again
  24. return render(name, data, escape);
  25. }
  26. function exists(name) {
  27. if (cache[name]) {
  28. return true;
  29. }
  30. return fs.existsSync(path.join(templatesDir, name));
  31. }
  32. module.exports = {
  33. render: render,
  34. exists: exists
  35. };