cre-nodejs-server
Version:
node.js server
64 lines (51 loc) • 1.72 kB
JavaScript
'use strict;'
var server = require('../server');
var getTransform = function () {
var fs = require("fs");
var transform = require('stream').Transform;
var builder = new transform({ });
var commonHeaderFileName = server.applicationRoot + '/' + server.pageHeader;
var commonHeader = null;
var doneHeader = false;
var commonHeaderOK = false;
fs.exists(commonHeaderFileName, function (exists) {
if (!exists) {
commonHeaderOK = true;
return;
}
commonHeader = '';
var stream = fs.createReadStream(commonHeaderFileName);
stream.setEncoding('utf8');
stream.on('data', function (buffer) {
commonHeader += buffer;
});
stream.on('end', function () {
commonHeaderOK = true;
});
});
var doTransform =function(obj, chunk, encoding, callback){
if (!commonHeaderOK)
{
setTimeout(function(){doTransform(obj, chunk, encoding, callback);}, 10);
return;
}
if (commonHeader && !doneHeader) // suppose only one <head> in html
{
var chunkString = chunk.toString();
var headStart = chunkString.indexOf("<head>");
if (headStart>-1){
var beforeInsert = chunkString.slice(0, headStart + 6);
var afterInsert = chunkString.slice(headStart + 7);
chunk = beforeInsert + commonHeader + afterInsert;
doneHeader = true;
}
}
obj.push(chunk); // no transform.
callback();
};
builder._transform = function(chunk, encoding, callback){
doTransform(this, chunk, encoding, callback);
};
return builder;
}
exports.getTransform = getTransform;