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