diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2011-06-30 23:48:38 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2011-06-30 23:48:38 +0200 |
commit | ec2f803a306c7843a8814029b5e77a9dadffd136 (patch) | |
tree | f6d54a0a2808de835bed85d2e8eba5df2d633238 /lib/templates.js | |
parent | 365added92d4faf26f03d14d303be5ac43706c48 (diff) | |
download | node-paste-ec2f803a306c7843a8814029b5e77a9dadffd136.tar.gz node-paste-ec2f803a306c7843a8814029b5e77a9dadffd136.tar.xz node-paste-ec2f803a306c7843a8814029b5e77a9dadffd136.zip |
progress: templates/css, new router, paste module as db abstraction
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 +}; |