-
Notifications
You must be signed in to change notification settings - Fork 9
/
plugin.coffee
41 lines (32 loc) · 1.18 KB
/
plugin.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
fs = require 'fs'
async = require 'async'
jade = require 'jade-legacy'
module.exports = (env, callback) ->
options = env.config.jade or {}
options.pretty ?= true
class JadePlugin extends env.plugins.Page
constructor: (@filepath, @metadata, @tpl) ->
getFilename: ->
@filepath.relative.replace /jade$/, 'html'
getHtml: ->
### render jade template using metadata as locals ###
@tpl @metadata
getView: -> 'template'
JadePlugin.fromFile = (filepath, callback) ->
async.waterfall [
(callback) -> fs.readFile filepath.full, callback
(buffer, callback) ->
# extract metadata using wintersmiths markdown plugin's markdown parser
env.plugins.MarkdownPage.extractMetadata buffer.toString(), callback
(result, callback) ->
try
opts = {filename: filepath.full}
env.utils.extend opts, options
tpl = jade.compile result.markdown, opts
catch error
callback error
return
callback null, new JadePlugin(filepath, result.metadata, tpl)
], callback
env.registerContentPlugin 'pages', '**/*.jade', JadePlugin
callback() # tell the plugin manager we are done