Moved utilities to separate folder

master
Vitaly Puzrin 2014-04-13 13:45:12 +04:00
rodzic 20b0318601
commit ca1374eb05
16 zmienionych plików z 129 dodań i 122 usunięć

Wyświetl plik

@ -1,7 +1,7 @@
'use strict'
var pako = require('../../../');
var utils = require('../../../lib/zlib/utils');
var utils = require('../../../lib/utils/common');
exports.run = function(data, level) {
pako.deflate(data.string, {

Wyświetl plik

@ -1,7 +1,7 @@
'use strict'
var pako = require('../../../');
var utils = require('../../../lib/zlib/utils');
var utils = require('../../../lib/utils/common');
exports.run = function(data, level) {
utils.setTyped(false);

Wyświetl plik

@ -1,7 +1,7 @@
'use strict'
var pako = require('../../../');
var utils = require('../../../lib/zlib/utils');
var utils = require('../../../lib/utils/common');
exports.run = function(data, level) {
utils.setTyped(false);

Wyświetl plik

@ -1,7 +1,7 @@
// Top level file is just a mixin of submodules & constants
'use strict';
var assign = require('./lib/zlib/utils').assign;
var assign = require('./lib/utils/common').assign;
var deflate = require('./lib/deflate');
var inflate = require('./lib/inflate');

Wyświetl plik

@ -2,7 +2,8 @@
var zlib_deflate = require('./zlib/deflate.js');
var utils = require('./zlib/utils');
var utils = require('./utils/common');
var strings = require('./utils/strings');
var msg = require('./zlib/messages');
var zstream = require('./zlib/zstream');
@ -187,7 +188,7 @@ Deflate.prototype.push = function(data, mode) {
// Convert data if needed
if (typeof data === 'string') {
// If we need to compress text, change encoding to utf8.
strm.next_in = utils.string2buf(data);
strm.next_in = strings.string2buf(data);
} else {
strm.next_in = data;
}
@ -210,7 +211,7 @@ Deflate.prototype.push = function(data, mode) {
}
if (strm.avail_out === 0 || (strm.avail_in === 0 && _mode === Z_FINISH)) {
if (this.options.to === 'string') {
this.onData(utils.buf2binstring(utils.shrinkBuf(strm.next_out, strm.next_out_index)));
this.onData(strings.buf2binstring(utils.shrinkBuf(strm.next_out, strm.next_out_index)));
} else {
this.onData(utils.shrinkBuf(strm.next_out, strm.next_out_index));
}

Wyświetl plik

@ -2,7 +2,8 @@
var zlib_inflate = require('./zlib/inflate.js');
var utils = require('./zlib/utils');
var utils = require('./utils/common');
var strings = require('./utils/strings');
var c = require('./zlib/constants');
var msg = require('./zlib/messages');
var zstream = require('./zlib/zstream');
@ -187,7 +188,7 @@ Inflate.prototype.push = function(data, mode) {
// Convert data if needed
if (typeof data === 'string') {
// Only binary strings can be decompressed on practice
strm.next_in = utils.binstring2buf(data);
strm.next_in = strings.binstring2buf(data);
} else {
strm.next_in = data;
}
@ -231,7 +232,7 @@ Inflate.prototype.push = function(data, mode) {
tail = 0;
}
utf8str = utils.buf2string(strm.next_out, next_out_utf8_index);
utf8str = strings.buf2string(strm.next_out, next_out_utf8_index);
// move tail
strm.next_out_index = tail;

104
lib/utils/common.js 100644
Wyświetl plik

@ -0,0 +1,104 @@
'use strict';
var TYPED_OK = (typeof Uint8Array !== 'undefined') &&
(typeof Uint16Array !== 'undefined') &&
(typeof Int32Array !== 'undefined');
exports.assign = function (obj /*from1, from2, from3, ...*/) {
var sources = Array.prototype.slice.call(arguments, 1);
while (sources.length) {
var source = sources.shift();
if (!source) { continue; }
if (typeof(source) !== 'object') {
throw new TypeError(source + 'must be non-object');
}
for (var p in source) {
if (source.hasOwnProperty(p)) {
obj[p] = source[p];
}
}
}
return obj;
};
// reduce buffer size, avoiding mem copy
exports.shrinkBuf = function (buf, size) {
if (buf.length === size) { return buf; }
if (buf.subarray) { return buf.subarray(0, size); }
buf.length = size;
return buf;
};
var fnTyped = {
arraySet: function (dest, src, src_offs, len, dest_offs) {
// Suppose, that with typed array support destination is
// always typed - don't check it
if (src.subarray) {
dest.set(src.subarray(src_offs, src_offs+len), dest_offs);
return;
}
// Fallback to ordinary array
for(var i=0; i<len; i++) {
dest[dest_offs + i] = src[src_offs + i];
}
},
// Join array of chunks to single array.
flattenChunks: function(chunks) {
var i, l, len, pos, chunk, result;
// calculate data length
len = 0;
for (i=0, l=chunks.length; i<l; i++) {
len += chunks[i].length;
}
// join chunks
result = new Uint8Array(len);
pos = 0;
for (i=0, l=chunks.length; i<l; i++) {
chunk = chunks[i];
result.set(chunk, pos);
pos += chunk.length;
}
return result;
}
};
var fnUntyped = {
arraySet: function (dest, src, src_offs, len, dest_offs) {
for(var i=0; i<len; i++) {
dest[dest_offs + i] = src[src_offs + i];
}
},
// Join array of chunks to single array.
flattenChunks: function(chunks) {
return [].concat.apply([], chunks);
}
};
// Enable/Disable typed arrays use, for testing
//
exports.setTyped = function (on) {
if (on) {
exports.Buf8 = Uint8Array;
exports.Buf16 = Uint16Array;
exports.Buf32 = Int32Array;
exports.assign(exports, fnTyped);
} else {
exports.Buf8 = Array;
exports.Buf16 = Array;
exports.Buf32 = Array;
exports.assign(exports, fnUntyped);
}
};
exports.setTyped(TYPED_OK);

Wyświetl plik

@ -1,45 +1,15 @@
// String encode/decode helpers
'use strict';
var TYPED_OK = (typeof Uint8Array !== 'undefined') &&
(typeof Uint16Array !== 'undefined') &&
(typeof Int32Array !== 'undefined');
var utils = require('./common');
// Quick check if we can use fast array to bin string conversion
var STR_APPLY_OK = true;
try { String.fromCharCode.apply(null, [0]); } catch(__) { STR_APPLY_OK = false; }
exports.assign = function (obj /*from1, from2, from3, ...*/) {
var sources = Array.prototype.slice.call(arguments, 1);
while (sources.length) {
var source = sources.shift();
if (!source) { continue; }
if (typeof(source) !== 'object') {
throw new TypeError(source + 'must be non-object');
}
for (var p in source) {
if (source.hasOwnProperty(p)) {
obj[p] = source[p];
}
}
}
return obj;
};
// reduce buffer size, avoiding mem copy
exports.shrinkBuf = function (buf, size) {
if (buf.length === size) { return buf; }
if (buf.subarray) { return buf.subarray(0, size); }
buf.length = size;
return buf;
};
// convert string to array (typed, when possible)
// src: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding
exports.string2buf = function (str) {
@ -52,7 +22,7 @@ exports.string2buf = function (str) {
buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : c < 0x200000 ? 4 : c < 0x4000000 ? 5 : 6;
}
buf = new exports.Buf8(buf_len);
buf = new utils.Buf8(buf_len);
/* transcription... */
@ -143,77 +113,9 @@ exports.buf2binstring = function(buf) {
// Convert binary string (typed, when possible)
exports.binstring2buf = function(str) {
var buf = new exports.Buf8(str.length);
var buf = new utils.Buf8(str.length);
for(var i=0, len=buf.length; i < len; i++) {
buf[i] = str.charCodeAt(i);
}
return buf;
};
var fnTyped = {
arraySet: function (dest, src, src_offs, len, dest_offs) {
// Suppose, that with typed array support destination is
// always typed - don't check it
if (src.subarray) {
dest.set(src.subarray(src_offs, src_offs+len), dest_offs);
return;
}
// Fallback to ordinary array
for(var i=0; i<len; i++) {
dest[dest_offs + i] = src[src_offs + i];
}
},
// Join array of chunks to single array.
flattenChunks: function(chunks) {
var i, l, len, pos, chunk, result;
// calculate data length
len = 0;
for (i=0, l=chunks.length; i<l; i++) {
len += chunks[i].length;
}
// join chunks
result = new Uint8Array(len);
pos = 0;
for (i=0, l=chunks.length; i<l; i++) {
chunk = chunks[i];
result.set(chunk, pos);
pos += chunk.length;
}
return result;
}
};
var fnUntyped = {
arraySet: function (dest, src, src_offs, len, dest_offs) {
for(var i=0; i<len; i++) {
dest[dest_offs + i] = src[src_offs + i];
}
},
// Join array of chunks to single array.
flattenChunks: function(chunks) {
return [].concat.apply([], chunks);
}
};
// Enable/Disable typed arrays use, for testing
//
exports.setTyped = function (on) {
if (on) {
exports.Buf8 = Uint8Array;
exports.Buf16 = Uint16Array;
exports.Buf32 = Int32Array;
exports.assign(exports, fnTyped);
} else {
exports.Buf8 = Array;
exports.Buf16 = Array;
exports.Buf32 = Array;
exports.assign(exports, fnUntyped);
}
};
exports.setTyped(TYPED_OK);

Wyświetl plik

@ -1,6 +1,6 @@
'use strict';
var utils = require('./utils');
var utils = require('../utils/common');
var trees = require('./trees');
var adler32 = require('./adler32');
var crc32 = require('./crc32');

Wyświetl plik

@ -1,7 +1,7 @@
'use strict';
var utils = require('./utils');
var utils = require('../utils/common');
var adler32 = require('./adler32');
var crc32 = require('./crc32');
var inflate_fast = require('./inffast');

Wyświetl plik

@ -1,7 +1,7 @@
'use strict';
var utils = require('./utils');
var utils = require('../utils/common');
var MAXBITS = 15;
var ENOUGH_LENS = 852;

Wyświetl plik

@ -1,7 +1,7 @@
'use strict';
var utils = require('./utils');
var utils = require('../utils/common');
/* Public constants ==========================================================*/
/* ===========================================================================*/

Wyświetl plik

@ -8,7 +8,7 @@ var assert = require('assert');
var helpers = require('./helpers');
var pako_utils = require('../lib/zlib/utils');
var pako_utils = require('../lib/utils/common');
var pako = require('../index');

Wyświetl plik

@ -8,7 +8,7 @@ var fs = require('fs');
var path = require('path');
var assert = require('assert');
var pako_utils = require('../lib/zlib/utils');
var pako_utils = require('../lib/utils/common');
var pako = require('../index');

Wyświetl plik

@ -6,7 +6,7 @@ var path = require('path');
var _ = require('lodash');
var async = require('async');
var pako_utils = require('../lib/zlib/utils');
var pako_utils = require('../lib/utils/common');
var pako = require('../index');
// Load fixtures to test

Wyświetl plik

@ -8,7 +8,6 @@ var fs = require('fs');
var path = require('path');
var assert = require('assert');
var pako_utils = require('../lib/zlib/utils');
var pako = require('../index');
var helpers = require('./helpers');
@ -31,7 +30,7 @@ describe('Deflate strings', function () {
it('Deflate with binary string output', function () {
assert.ok(cmp(
pako_utils.binstring2buf(pako.deflate(sampleArray, { to: 'string', chunkSize: 99 })),
new Buffer(pako.deflate(sampleArray, { to: 'string', chunkSize: 99 }), 'binary'),
pako.deflate(sampleArray)
));
});