diff --git a/lib/compilers.js b/lib/compilers.js old mode 100644 new mode 100755 index debbcf8..839a2fb --- a/lib/compilers.js +++ b/lib/compilers.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript 1.6.3 (function() { - var compileCoffeescript, compilers, cs, eco, err, fs, jade, path, stylus, + var compileCoffeescript, compilers, cs, eco, err, fs, handlebars, jade, path, stylus, __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; fs = require('fs'); @@ -118,6 +118,31 @@ err = _error; } + try { + handlebars = require('handlebars'); + compilers.hbs = function(path) { + var content, ex, source, template; + content = fs.readFileSync(path, 'utf8'); + try { + template = handlebars.precompile(content, { + separator: '\n', + knownHelpers: [], + knownHelpersOnly: false + }); + source = template.toString(); + return "module.exports = Handlebars.template(" + source + ");"; + } catch (_error) { + ex = _error; + throw new Error("" + ex + " in " + path); + } + }; + require.extensions['.hbs'] = function(module, filename) { + return module._compile(compilers.hbs(filename), filename); + }; + } catch (_error) { + err = _error; + } + try { stylus = require('stylus'); compilers.styl = function(_path) { diff --git a/package.json b/package.json old mode 100644 new mode 100755 index 2eae9df..ea98c78 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "karma": "0.8.0", "jade": ">=0.28.2", "file": ">=0.2.1", - "uglify-js": "~2.4.0" + "uglify-js": "~2.4.0", + "handlebars": "~1.1.2" } } diff --git a/src/compilers.coffee b/src/compilers.coffee old mode 100644 new mode 100755 index e6a0df7..b6edc04 --- a/src/compilers.coffee +++ b/src/compilers.coffee @@ -90,6 +90,26 @@ try module._compile compilers.jade(filename), filename catch err +try + handlebars = require('handlebars') + + compilers.hbs = (path) -> + content = fs.readFileSync(path, 'utf8') + try + template = handlebars.precompile content, + separator: '\n' + knownHelpers: [] + knownHelpersOnly: false + source = template.toString() + "module.exports = Handlebars.template(#{source});" + catch ex + throw new Error("#{ex} in #{path}") + + require.extensions['.hbs'] = (module, filename) -> + module._compile compilers.hbs(filename), filename +catch err + + try stylus = require('stylus') diff --git a/src/package.coffee b/src/package.coffee old mode 100644 new mode 100755