프로젝트

일반

사용자정보

통계
| 개정판:

root / HServer / 00.Server / 00.Program / node_modules / arraybuffer.slice / index.js

이력 | 보기 | 이력해설 | 다운로드 (725 Bytes)

1
/**
2
 * An abstraction for slicing an arraybuffer even when
3
 * ArrayBuffer.prototype.slice is not supported
4
 *
5
 * @api public
6
 */
7

    
8
module.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
};