summaryrefslogtreecommitdiffstats
path: root/lib/templates.js
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2011-06-30 23:48:38 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2011-06-30 23:48:38 +0200
commitec2f803a306c7843a8814029b5e77a9dadffd136 (patch)
treef6d54a0a2808de835bed85d2e8eba5df2d633238 /lib/templates.js
parent365added92d4faf26f03d14d303be5ac43706c48 (diff)
downloadnode-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 '')
-rw-r--r--lib/templates.js46
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
+};