pug.coffee 803 B

123456789101112131415161718192021222324252627282930313233
  1. async = require 'async'
  2. fs = require 'fs'
  3. pug = require 'pug'
  4. path = require 'path'
  5. module.exports = (env, callback) ->
  6. class PugTemplate extends env.TemplatePlugin
  7. constructor: (@fn) ->
  8. render: (locals, callback) ->
  9. try
  10. callback null, Buffer.from @fn(locals)
  11. catch error
  12. callback error
  13. PugTemplate.fromFile = (filepath, callback) ->
  14. async.waterfall [
  15. (callback) ->
  16. fs.readFile filepath.full, callback
  17. (buffer, callback) =>
  18. conf = env.config.pug or {}
  19. conf.filename = filepath.full
  20. try
  21. rv = pug.compile buffer.toString(), conf
  22. callback null, new this rv
  23. catch error
  24. callback error
  25. ], callback
  26. env.registerTemplatePlugin '**/*.*(pug|jade)', PugTemplate
  27. callback()