vinyl-fs
Version:
Vinyl adapter for the file system.
38 lines (27 loc) • 922 B
JavaScript
;
var fs = require('graceful-fs');
var getCodec = require('../../codecs');
var DEFAULT_ENCODING = require('../../constants').DEFAULT_ENCODING;
function bufferFile(file, optResolver, onRead) {
var encoding = optResolver.resolve('encoding', file);
var codec = getCodec(encoding);
if (encoding && !codec) {
return onRead(new Error('Unsupported encoding: ' + encoding));
}
fs.readFile(file.path, onReadFile);
function onReadFile(readErr, contents) {
if (readErr) {
return onRead(readErr);
}
if (encoding) {
var removeBOM = codec.bomAware && optResolver.resolve('removeBOM', file);
if (removeBOM || codec.enc !== DEFAULT_ENCODING) {
contents = codec.decode(contents, { removeBOM: removeBOM });
contents = getCodec(DEFAULT_ENCODING).encode(contents);
}
}
file.contents = contents;
onRead();
}
}
module.exports = bufferFile;