summaryrefslogtreecommitdiffstats
path: root/lib/templates.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/templates.js')
-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
+};