zlib: separate sync/async methods
authorFedor Indutny <fedor.indutny@gmail.com>
Mon, 3 Feb 2014 07:55:47 +0000 (11:55 +0400)
committerFedor Indutny <fedor.indutny@gmail.com>
Mon, 3 Feb 2014 21:41:02 +0000 (01:41 +0400)
doc/api/zlib.markdown
lib/zlib.js
test/simple/test-zlib-convenience-methods.js

index 8ade5a8..68087ea 100644 (file)
@@ -195,36 +195,44 @@ the header.
 <!--type=misc-->
 
 All of these take a string or buffer as the first argument, an optional second
-argument to supply options to the zlib classes and an optional callback. If a
-callback is supplied, they will call it asynchronously with
-`callback(error, result)`, otherwise they will return the result or throw the
-error synchronously.
+argument to supply options to the zlib classes and will call the supplied
+callback with `callback(error, result)`.
 
-## zlib.deflate(buf, [options], [callback])
+Every method has a `*Sync` counterpart, which accept the same arguments, but
+without a callback.
+
+## zlib.deflate(buf, [options], callback)
+## zlib.deflateSync(buf, [options])
 
 Compress a string with Deflate.
 
-## zlib.deflateRaw(buf, [options], [callback])
+## zlib.deflateRaw(buf, [options], callback)
+## zlib.deflateRawSync(buf, [options])
 
 Compress a string with DeflateRaw.
 
-## zlib.gzip(buf, [options], [callback])
+## zlib.gzip(buf, [options], callback)
+## zlib.gzipSync(buf, [options])
 
 Compress a string with Gzip.
 
-## zlib.gunzip(buf, [options], [callback])
+## zlib.gunzip(buf, [options], callback)
+## zlib.gunzipSync(buf, [options])
 
 Decompress a raw Buffer with Gunzip.
 
-## zlib.inflate(buf, [options], [callback])
+## zlib.inflate(buf, [options], callback)
+## zlib.inflateSync(buf, [options])
 
 Decompress a raw Buffer with Inflate.
 
-## zlib.inflateRaw(buf, [options], [callback])
+## zlib.inflateRaw(buf, [options], callback)
+## zlib.inflateRawSync(buf, [options])
 
 Decompress a raw Buffer with InflateRaw.
 
-## zlib.unzip(buf, [options], [callback])
+## zlib.unzip(buf, [options], callback)
+## zlib.unzipSync(buf, [options])
 
 Decompress a raw Buffer with Unzip.
 
index ae37fcf..0c63997 100644 (file)
@@ -115,6 +115,10 @@ exports.deflate = function(buffer, opts, callback) {
   return zlibBuffer(new Deflate(opts), buffer, callback);
 };
 
+exports.deflateSync = function(buffer, opts) {
+  return zlibBufferSync(new Deflate(opts), buffer);
+};
+
 exports.gzip = function(buffer, opts, callback) {
   if (util.isFunction(opts)) {
     callback = opts;
@@ -123,6 +127,10 @@ exports.gzip = function(buffer, opts, callback) {
   return zlibBuffer(new Gzip(opts), buffer, callback);
 };
 
+exports.gzipSync = function(buffer, opts) {
+  return zlibBufferSync(new Gzip(opts), buffer);
+};
+
 exports.deflateRaw = function(buffer, opts, callback) {
   if (util.isFunction(opts)) {
     callback = opts;
@@ -131,6 +139,10 @@ exports.deflateRaw = function(buffer, opts, callback) {
   return zlibBuffer(new DeflateRaw(opts), buffer, callback);
 };
 
+exports.deflateRawSync = function(buffer, opts) {
+  return zlibBufferSync(new DeflateRaw(opts), buffer);
+};
+
 exports.unzip = function(buffer, opts, callback) {
   if (util.isFunction(opts)) {
     callback = opts;
@@ -139,6 +151,10 @@ exports.unzip = function(buffer, opts, callback) {
   return zlibBuffer(new Unzip(opts), buffer, callback);
 };
 
+exports.unzipSync = function(buffer, opts) {
+  return zlibBufferSync(new Unzip(opts), buffer);
+};
+
 exports.inflate = function(buffer, opts, callback) {
   if (util.isFunction(opts)) {
     callback = opts;
@@ -147,6 +163,10 @@ exports.inflate = function(buffer, opts, callback) {
   return zlibBuffer(new Inflate(opts), buffer, callback);
 };
 
+exports.inflateSync = function(buffer, opts) {
+  return zlibBufferSync(new Inflate(opts), buffer);
+};
+
 exports.gunzip = function(buffer, opts, callback) {
   if (util.isFunction(opts)) {
     callback = opts;
@@ -155,6 +175,10 @@ exports.gunzip = function(buffer, opts, callback) {
   return zlibBuffer(new Gunzip(opts), buffer, callback);
 };
 
+exports.gunzipSync = function(buffer, opts) {
+  return zlibBufferSync(new Gunzip(opts), buffer);
+};
+
 exports.inflateRaw = function(buffer, opts, callback) {
   if (util.isFunction(opts)) {
     callback = opts;
@@ -163,11 +187,11 @@ exports.inflateRaw = function(buffer, opts, callback) {
   return zlibBuffer(new InflateRaw(opts), buffer, callback);
 };
 
-function zlibBuffer(engine, buffer, callback) {
-  if (!util.isFunction(callback)) {
-    return zlibBufferSync(engine, buffer, callback);
-  }
+exports.inflateRawSync = function(buffer, opts) {
+  return zlibBufferSync(new InflateRaw(opts), buffer);
+};
 
+function zlibBuffer(engine, buffer, callback) {
   var buffers = [];
   var nread = 0;
 
@@ -200,7 +224,7 @@ function zlibBuffer(engine, buffer, callback) {
   }
 }
 
-function zlibBufferSync(engine, buffer, callback) {
+function zlibBufferSync(engine, buffer) {
   if (util.isString(buffer))
     buffer = new Buffer(buffer);
   if (!util.isBuffer(buffer))
index 43b68d1..88cf82f 100644 (file)
@@ -58,15 +58,15 @@ var opts = {
     });
   });
 
-  var result = zlib[method[0]](expect, opts);
-  result = zlib[method[1]](result, opts);
+  var result = zlib[method[0] + 'Sync'](expect, opts);
+  result = zlib[method[1] + 'Sync'](result, opts);
   assert.equal(result, expect,
     'Should get original string after ' +
     method[0] + '/' + method[1] + ' with options.');
   hadRun++;
 
-  result = zlib[method[0]](expect);
-  result = zlib[method[1]](result);
+  result = zlib[method[0] + 'Sync'](expect);
+  result = zlib[method[1] + 'Sync'](result);
   assert.equal(result, expect,
     'Should get original string after ' +
     method[0] + '/' + method[1] + ' without options.');