Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
added sync method for reading files due to strange async behvaior
  • Loading branch information
twobit committed Jul 23, 2012
1 parent 5b3f65f commit 37dc39b
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 19 deletions.
37 changes: 28 additions & 9 deletions build/gear.js
Expand Up @@ -2785,16 +2785,35 @@ Blob.prototype.toString = function() {
};

var readFile = {
server: function(name, encoding, callback) {
server: function(name, encoding, callback, sync) {
var fs = require('fs');
fs.readFile(name, encoding === 'bin' ? undefined : encoding, function(err, data) {
if (err) {
callback(err);
} else {
callback(null, new Blob(data, {name: name}));
}
});

if (sync) {
readFile.serverSync(name, encoding, callback);
} else {
fs.readFile(name, encoding === 'bin' ? undefined : encoding, function(err, data) {
if (err) {
callback(err);
} else {
callback(null, new Blob(data, {name: name}));
}
});
}
},

// readFileSync added due to some strange async behavior with readFile
serverSync: function(name, encoding, callback) {
var fs = require('fs'),
data;

try {
data = fs.readFileSync(name, encoding === 'bin' ? undefined : encoding);
callback(null, new Blob(data, {name: name}));
} catch(e) {
callback(e);
}
},

client: function(name, encoding, callback) {
if (name in localStorage) {
callback(null, new Blob(localStorage[name], {name: name}));
Expand Down Expand Up @@ -2958,7 +2977,7 @@ var Blob = require('../blob').Blob;
exports.read = function(options, done) {
options = (typeof options === 'string') ? {name: options} : options;
var encoding = options.encoding || 'utf8';
Blob.readFile(options.name, encoding, done);
Blob.readFile(options.name, encoding, done, options.sync);
};/*
* Copyright (c) 2011-2012, Yahoo! Inc. All rights reserved.
* Copyrights licensed under the New BSD License.
Expand Down
2 changes: 1 addition & 1 deletion build/gear.min.js

Large diffs are not rendered by default.

35 changes: 27 additions & 8 deletions lib/blob.js
Expand Up @@ -57,16 +57,35 @@ Blob.prototype.toString = function() {
};

var readFile = {
server: function(name, encoding, callback) {
server: function(name, encoding, callback, sync) {
var fs = require('fs');
fs.readFile(name, encoding === 'bin' ? undefined : encoding, function(err, data) {
if (err) {
callback(err);
} else {
callback(null, new Blob(data, {name: name}));
}
});

if (sync) {
readFile.serverSync(name, encoding, callback);
} else {
fs.readFile(name, encoding === 'bin' ? undefined : encoding, function(err, data) {
if (err) {
callback(err);
} else {
callback(null, new Blob(data, {name: name}));
}
});
}
},

// readFileSync added due to some strange async behavior with readFile
serverSync: function(name, encoding, callback) {
var fs = require('fs'),
data;

try {
data = fs.readFileSync(name, encoding === 'bin' ? undefined : encoding);
callback(null, new Blob(data, {name: name}));
} catch(e) {
callback(e);
}
},

client: function(name, encoding, callback) {
if (name in localStorage) {
callback(null, new Blob(localStorage[name], {name: name}));
Expand Down
2 changes: 1 addition & 1 deletion lib/tasks/read.js
Expand Up @@ -16,5 +16,5 @@ var Blob = require('../blob').Blob;
exports.read = function(options, done) {
options = (typeof options === 'string') ? {name: options} : options;
var encoding = options.encoding || 'utf8';
Blob.readFile(options.name, encoding, done);
Blob.readFile(options.name, encoding, done, options.sync);
};

0 comments on commit 37dc39b

Please sign in to comment.