Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

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

  • Loading branch information...
commit 35589528992e8bf5ca70271beaef05a6d82f9dcf 1 parent eca2de7
@creationix creationix authored ry committed
Showing with 8 additions and 20 deletions.
  1. +8 −20 lib/file.js
View
28 lib/file.js
@@ -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");
-};
Please sign in to comment.
Something went wrong with that request. Please try again.