Sha256: b135e0a4c02b20d4045806c733a37449cb0c7cf84030a700fd3a774afc3b2507

Contents?: true

Size: 895 Bytes

Versions: 185

Compression:

Stored size: 895 Bytes

Contents

let buffer,
  bufferMax;

export class BufferEmptyError extends Error {
  constructor(message) {
    super();
    this.message = message || 'Buffer is empty.';
  }
}
export class BufferFullError extends Error {
  constructor(message) {
    super();
    this.message = message || 'Buffer is full.';
  }
}

const read = () => {
  if (buffer.length === 0) {
    throw new BufferEmptyError();
  }
  return buffer.splice(0, 1)[0];
};

const write = (value) => {
  if (buffer.length === bufferMax) {
    throw new BufferFullError();
  }
  value ? buffer.push(value) : null;
};

const forceWrite = (value) => {
  if (buffer.length === bufferMax) {
    read();
  }
  write(value);
};

const clear = () => buffer = [];

const CircularBuffer = (capacity) => {
  buffer = [];
  bufferMax = capacity;
  return {
    read,
    write,
    forceWrite,
    clear,
  };
};

export { CircularBuffer as default };

Version data entries

185 entries across 185 versions & 1 rubygems

Version Path
trackler-2.2.1.78 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.77 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.76 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.75 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.74 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.73 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.72 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.71 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.70 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.69 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.68 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.67 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.66 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.65 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.64 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.63 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.62 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.61 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.60 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.2.1.59 tracks/ecmascript/exercises/circular-buffer/example.js