DRY up the open, write, read, and close methods on the File prototype.

This commit is contained in:
Tim Caswell
2009-10-28 11:49:22 -05:00
committed by Ryan Dahl
parent eca2de73ed
commit 3558952899

View File

@@ -108,17 +108,16 @@ proto._maybeDispatch = function () {
debugObject(self.currentAction);
args = self.currentAction.args || [];
method = self.currentAction.method;
if (self.currentAction.method !== "open") {
if (method !== "open") {
args.unshift(self.fd);
}
method = self.currentAction.method;
if (!args[3] && (method === "read" || method === "write")) {
args[3] = self.encoding;
}
promise = node.fs[method].apply(self, args);
userPromise = self.currentAction.promise;
@@ -144,21 +143,10 @@ proto._queueAction = function (method, args) {
return userPromise;
};
// FIXME the following can probably be DRY'd up with some fancy getter
// stuff.
proto.open = function (filename, flags, mode) {
return this._queueAction("open", [filename, flags, mode]);
};
(["open", "write", "read", "close"]).forEach(function (name) {
proto[name] = function () {
return this._queueAction(name, Array.prototype.slice.call(arguments, 0));
};
});
proto.write = function (data, pos, encoding) {
return this._queueAction("write", [data, pos, encoding]);
};
proto.read = function (length, pos, encoding) {
return this._queueAction("read", [length, pos, encoding]);
};
proto.close = function () {
return this._queueAction("close");
};