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