diff --git a/lib/loadPartials.js b/lib/loadPartials.js index 280df6c..5f9f4f4 100644 --- a/lib/loadPartials.js +++ b/lib/loadPartials.js @@ -1,5 +1,7 @@ -var path = require('path'); -var utils = require('./utils'); +var fs = require('fs'); +var path = require('path'); +var stripBom = require('strip-bom'); +var utils = require('./utils'); /** * Looks for files with .html, .hbs, or .handlebars extensions within the given directory, and adds them as Handlebars partials matching the name of the file. @@ -10,7 +12,7 @@ module.exports = function(dir) { for (var i in partials) { var ext = path.extname(partials[i]); - var file = utils.readWithoutBOM(partials[i]); + var file = stripBom(fs.readFileSync(partials[i])); var name = path.basename(partials[i], ext); this.Handlebars.registerPartial(name, file.toString()); diff --git a/lib/render.js b/lib/render.js index aefb9f0..ad6e3a2 100644 --- a/lib/render.js +++ b/lib/render.js @@ -2,8 +2,8 @@ var extend = require('deepmerge'); var fm = require('front-matter'); var path = require('path'); var through = require('through2'); +var stripBom = require('strip-bom'); var processRoot = require('./processRoot'); -var utils = require('./utils'); module.exports = function() { return through.obj(render.bind(this)); @@ -18,7 +18,7 @@ module.exports = function() { function render(file, enc, cb) { try { // Get the HTML for the current page and layout - var page = fm(utils.readWithoutBOM(file.path).toString()); + var page = fm(stripBom(file.contents.toString())); var pageData; // Determine which layout to use diff --git a/lib/utils.js b/lib/utils.js index 6c2e57d..5d81148 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -21,22 +21,3 @@ exports.loadFiles = function(dir, pattern) { return files; } - -/** - * Skips over the UTF-8 BOM if it exists in the file - * @param {string} path File to load - * @return {Buffer} File contents without BOM - */ -exports.readWithoutBOM = function(path) { - var bomBytes = [0xEF, 0xBB, 0xBF]; - var bomSize = bomBytes.length; - var fileData = fs.readFileSync(path); - var dataLength = fileData.length; - var hasBom = true; - - for (var i = 0; (i < bomSize) && (i < dataLength) && hasBom; ++i) { - hasBom = fileData[i] === bomBytes[i]; - } - - return hasBom ? fileData.slice(bomSize) : fileData; -} diff --git a/package.json b/package.json index 000be50..4b1cca5 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "marked": "^0.3.6", "nopt": "^4.0.1", "slash": "^1.0.0", + "strip-bom": "2.0.0", "through2": "^2.0.0", "vinyl-fs": "^2.4.4" },