File: /home/f/r/e/frenchy/www/french-american.org/current/node_modules/promised-io/engines/rhino/fs.js
var File = require("fs"),
LazyArray = require("../../lazy-array").LazyArray,
defer = require("../../promise").defer;
for(var i in File){
exports[i] = File[i];
}
exports.readFileSync = File.read;
exports.writeFileSync = File.write;
exports.mkdirSync = File.mkdir;
exports.readdir = exports.list;
exports.stat = exports.statSync = function(path) {
try{
return {
isFile: function(){
return File.isFile(path);
},
size: File.size(path)
};
}catch(e){
var deferred = defer();
deferred.reject(e);
return deferred.promise;
}
};
exports.makeTree = File.mkdirs;
exports.makeDirectory = File.mkdir;
exports.open = function(){
var file = File.open.apply(this, arguments);
var array = LazyArray({
some: function(callback){
while(true){
var buffer = file.read(4096);
if(buffer.length <= 0){
return;
}
if(callback(buffer)){
return;
}
}
}
});
for(var i in array){
file[i] = array[i];
}
return file;
};
exports.openSync = exports.open;
exports.createWriteStream = function(path, options) {
options = options || {};
options.flags = options.flags || "w";
var flags = options.flags || "w",
f = File.open(path, flags);
return {
writable: true,
write: function() {
var deferred = defer();
try {
f.write.apply(this, arguments);
f.flush();
}
catch (e) {
return stream.writable = false;
}
deferred.resolve();
return deferred.promise;
},
end: f.close,
destroy: f.close
}
}