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) {