raspberryGPIOhtmlserver/node_modules/arraybuffer.slice/index.js
node_modules/arraybuffer.slice/index.jsRaw
1/**
2 * An abstraction for slicing an arraybuffer even when
3 * ArrayBuffer.prototype.slice is not supported
4 *
5 * @api public
6 */
7
8module.exports = function(arraybuffer, start, end) {
9 var bytes = arraybuffer.byteLength;
10 start = start || 0;
11 end = end || bytes;
12
13 if (arraybuffer.slice) { return arraybuffer.slice(start, end); }
14
15 if (start < 0) { start += bytes; }
16 if (end < 0) { end += bytes; }
17 if (end > bytes) { end = bytes; }
18
19 if (start >= bytes || start >= end || bytes === 0) {
20 return new ArrayBuffer(0);
21 }
22
23 var abv = new Uint8Array(arraybuffer);
24 var result = new Uint8Array(end - start);
25 for (var i = start, ii = 0; i < end; i++, ii++) {
26 result[ii] = abv[i];
27 }
28 return result.buffer;
29};