diff options
Diffstat (limited to 'lib/templates.js')
-rw-r--r-- | lib/templates.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/templates.js b/lib/templates.js new file mode 100644 index 0000000..c470454 --- /dev/null +++ b/lib/templates.js @@ -0,0 +1,46 @@ +var nun = require('nun'); + +var templates = {}; + +var render = function(template, args, callback) { + if (template in templates) { + callback(undefined, templates[template](args)); + } + else { + nun.compile(__dirname + '/../templates/' + template, "", function(err, tmpl) { + if (err) { + callback(err); + } + else { + templates[template] = tmpl; + callback(err, tmpl(args)); + } + }); + } +}; + +var renderHtml = function(template, args, res) { + render(template, args, function(err, events) { + if (err) { + res.writeHead(500, {'Content-Type': 'text/plain'}); + res.write(JSON.stringify(err)); + res.end('\n'); + } + else { + res.writeHead(200, {'Content-Type': 'text/html'}); + + events.on('data', function(data) { + res.write(data); + }); + + events.on('end', function() { + res.end('\n'); + }); + } + }); +}; + +module.exports = { + render: render, + renderHtml: renderHtml +}; |