Sha256: b22621ef5d0a9c8f3a9483fd8544dc2bf9ea29df01a3fd8932501abe07353ea9

Contents?: true

Size: 1007 Bytes

Versions: 185

Compression:

Stored size: 1007 Bytes

Contents

let buffer, bufferMax;

const BufferEmptyException = () => ({
    name: "buffer empty exception!",
    message: "can't read from an empty buffer!"
  });

const BufferFullException = () => ({
    name: "buffer full exception!",
    message: "can't write to a full buffer!"
  });

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

const write = (value) => {
  if (buffer.length === bufferMax){
    throw BufferFullException();
  }
  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: read,
    write: write,
    forceWrite: forceWrite,
    clear: clear
  }
};

export { CircularBuffer as default };
export { BufferFullException as bufferFullException };
export { BufferEmptyException as bufferEmptyException };

Version data entries

185 entries across 185 versions & 1 rubygems

Version Path
trackler-2.1.0.29 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.28 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.27 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.26 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.25 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.24 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.23 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.22 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.21 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.20 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.19 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.18 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.17 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.16 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.15 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.14 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.13 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.12 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.11 tracks/ecmascript/exercises/circular-buffer/example.js
trackler-2.1.0.10 tracks/ecmascript/exercises/circular-buffer/example.js