diff --git a/lib/wheat.js b/lib/wheat.js index c8e8ff3..eb810a0 100644 --- a/lib/wheat.js +++ b/lib/wheat.js @@ -33,7 +33,8 @@ var ChildProcess = require('child_process'), NodeRouter = require('node-router'), Prettify = require('prettify'), Graphviz = require('graphviz'), - MD5 = require('md5'); + MD5 = require('md5'), + Buffer = require('buffer').Buffer; var Data; (function dataSources() { @@ -127,35 +128,43 @@ var Data; var Renderers; (function pageRenderers() { + // Convert UTF8 strings to binary buffers for faster loading + function stringToBuffer(string) { + var buffer = new Buffer(Buffer.byteLength(string)); + buffer.utf8Write(string); + return buffer; + } + Renderers = { index: Git.safe(function (version, callback) { sys.debug("Index"); Data.articles(version, function (err, articles) { if (err) { callback(err); return; } - callback(null, "

Index

" + sys.inspect(articles)); + callback(null, stringToBuffer("

Index

\n" + JSON.stringify(articles))); + // callback(null, "

Index

\n" + JSON.stringify(articles)); }); }), feed: Git.safe(function (version, callback) { Data.articles(version, function (err, articles) { if (err) { callback(err); return; } - callback(null, "

Feed

" + sys.inspect(articles)); + callback(null, stringToBuffer("

Feed

\n" + JSON.stringify(articles))); }); }), article: Git.safe(function (version, name, callback) { Data.article(version, name, function (err, article) { if (err) { callback(err); return; } - callback(null, "

Article " + name + "

" + sys.inspect(article)); + callback(null, stringToBuffer("

Article " + name + "

\n" + version)); }); }), staticFile: Git.safe(function (version, path, callback) { - callback(null, "

Static File " + path + "

"); + callback(null, stringToBuffer("

Static File " + path + "

\n" + version)); }), dotFile: Git.safe(function (version, path, callback) { - callback(null, "

Dot File " + path + "

"); + callback(null, stringToBuffer("

Dot File " + path + "

\n" + version)); }) } @@ -192,10 +201,10 @@ var Wheat = module.exports = function Wheat(repo, port, host) { addRoute(/^\/()feed.xml$/, Renderers.feed); addRoute(/^\/()([a-z0-9_-]+)$/, Renderers.article); addRoute(/^\/([a-f0-9]{40})\/([a-z0-9_-]+)$/, Renderers.article); - addRoute(/^\/()([a-z0-9_-]+\/.+\.dot)$/, Renderers.dotFile); - addRoute(/^\/()([a-z0-9_-]+\/.+\.[a-z]{2,4})$/, Renderers.staticFile); - addRoute(/^\/([a-f0-9]{40})\/([a-z0-9_-]+\/.+\.dot)$/, Renderers.dotFile); - addRoute(/^\/([a-f0-9]{40})\/([a-z0-9_-]+\/.+\.[a-z]{2,4})$/, Renderers.staticFile); + addRoute(/^\/()([a-z0-9_-]+\.dot)$/, Renderers.dotFile); + addRoute(/^\/()([a-z0-9_-]+\.[a-z]{2,4})$/, Renderers.staticFile); + addRoute(/^\/([a-f0-9]{40})\/([a-z0-9_-]+\.dot)$/, Renderers.dotFile); + addRoute(/^\/([a-f0-9]{40})\/([a-z0-9_-]+\.[a-z]{2,4})$/, Renderers.staticFile); server.get("/", function (request, response) { Renderers.index("fs", function (err, html) {