circularr
Advanced tools
Comparing version 0.1.5 to 0.2.0
@@ -12,2 +12,4 @@ export default class Circularr<T> { | ||
unshift(value: T): T; | ||
slice(beginIndex?: number, endIndex?: number): Circularr<T>; | ||
trim(): Circularr<T>; | ||
} |
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;class Circularr{constructor(a){this.data=Array(a),this.index=0}static from(a){const b=new Circularr(a.length);for(let c=0;c<a.length;++c)b.data[c]=a[c];return b}get length(){return this.data.length}*[Symbol.iterator](){for(let a=0;a<this.data.length;++a)yield this.data[(a+this.index)%this.data.length]}fill(a){for(let b=0;b<this.data.length;++b)this.data[b]=a;return this.index=0,this}clear(){return this.data=Array(this.data.length),this.index=0,this}shift(a){const b=this.data[this.index];return this.data[this.index]=a,this.index=(this.index+1)%this.data.length,b}unshift(a){this.index=(this.index+this.data.length-1)%this.data.length;const b=this.data[this.index];return this.data[this.index]=a,b}}exports.default=Circularr; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJDaXJjdWxhcnIiLCJjb25zdHJ1Y3RvciIsImxlbmd0aCIsImRhdGEiLCJBcnJheSIsImluZGV4IiwiZnJvbSIsInNvdXJjZSIsImMiLCJpIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJmaWxsIiwidmFsdWUiLCJjbGVhciIsInNoaWZ0IiwicmV0dXJuVmFsdWUiLCJ1bnNoaWZ0Il0sIm1hcHBpbmdzIjoiMkZBQWUsS0FBTUEsQ0FBQUEsU0FBYyxDQUlqQ0MsV0FBVyxDQUFFQyxDQUFGLENBQWtCLENBQzNCLEtBQUtDLElBQUwsQ0FBZ0JDLEtBQWhCLENBQXlCRixDQUF6QixDQUQyQixDQUUzQixLQUFLRyxLQUFMLENBQWEsQ0FDZCxDQUVELE1BQU9DLENBQUFBLElBQVAsQ0FBaUJDLENBQWpCLENBQTRDLENBQzFDLEtBQU1DLENBQUFBLENBQUMsQ0FBRyxHQUFJUixDQUFBQSxTQUFKLENBQWlCTyxDQUFNLENBQUNMLE1BQXhCLENBQVYsQ0FDQSxJQUFLLEdBQUlPLENBQUFBLENBQUMsQ0FBRyxDQUFiLENBQWdCQSxDQUFDLENBQUdGLENBQU0sQ0FBQ0wsTUFBM0IsQ0FBbUMsRUFBRU8sQ0FBckMsQ0FDRUQsQ0FBQyxDQUFDTCxJQUFGLENBQU9NLENBQVAsRUFBWUYsQ0FBTSxDQUFDRSxDQUFELENBQWxCLENBR0YsTUFBT0QsQ0FBQUEsQ0FDUixDQUVELEdBQUlOLENBQUFBLE1BQUosRUFBc0IsQ0FDcEIsTUFBTyxNQUFLQyxJQUFMLENBQVVELE1BQ2xCLENBRUQsRUFBR1EsTUFBTSxDQUFDQyxRQUFWLEdBQXVCLENBQ3JCLElBQUssR0FBSUYsQ0FBQUEsQ0FBQyxDQUFHLENBQWIsQ0FBZ0JBLENBQUMsQ0FBRyxLQUFLTixJQUFMLENBQVVELE1BQTlCLENBQXNDLEVBQUVPLENBQXhDLENBQ0UsS0FBTSxNQUFLTixJQUFMLENBQVUsQ0FBQ00sQ0FBQyxDQUFHLEtBQUtKLEtBQVYsRUFBbUIsS0FBS0YsSUFBTCxDQUFVRCxNQUF2QyxDQUVULENBRURVLElBQUksQ0FBRUMsQ0FBRixDQUFrQixDQUNwQixJQUFLLEdBQUlKLENBQUFBLENBQUMsQ0FBRyxDQUFiLENBQWdCQSxDQUFDLENBQUcsS0FBS04sSUFBTCxDQUFVRCxNQUE5QixDQUFzQyxFQUFFTyxDQUF4QyxDQUNFLEtBQUtOLElBQUwsQ0FBVU0sQ0FBVixFQUFlSSxDQUFmLENBSUYsTUFGQSxNQUFLUixLQUFMLENBQWEsQ0FFYixDQUFPLElBQ1IsQ0FFRFMsS0FBSyxFQUFVLENBSWIsTUFIQSxNQUFLWCxJQUFMLENBQWdCQyxLQUFoQixDQUF5QixLQUFLRCxJQUFMLENBQVVELE1BQW5DLENBR0EsQ0FGQSxLQUFLRyxLQUFMLENBQWEsQ0FFYixDQUFPLElBQ1IsQ0FFRFUsS0FBSyxDQUFFRixDQUFGLENBQWUsQ0FDbEIsS0FBTUcsQ0FBQUEsQ0FBVyxDQUFHLEtBQUtiLElBQUwsQ0FBVSxLQUFLRSxLQUFmLENBQXBCLENBSUEsTUFIQSxNQUFLRixJQUFMLENBQVUsS0FBS0UsS0FBZixFQUF3QlEsQ0FHeEIsQ0FGQSxLQUFLUixLQUFMLENBQWEsQ0FBQyxLQUFLQSxLQUFMLENBQWEsQ0FBZCxFQUFtQixLQUFLRixJQUFMLENBQVVELE1BRTFDLENBQU9jLENBQ1IsQ0FFREMsT0FBTyxDQUFFSixDQUFGLENBQWUsQ0FDcEIsS0FBS1IsS0FBTCxDQUFhLENBQUMsS0FBS0EsS0FBTCxDQUFhLEtBQUtGLElBQUwsQ0FBVUQsTUFBdkIsQ0FBZ0MsQ0FBakMsRUFBc0MsS0FBS0MsSUFBTCxDQUFVRCxNQUR6QyxDQUVwQixLQUFNYyxDQUFBQSxDQUFXLENBQUcsS0FBS2IsSUFBTCxDQUFVLEtBQUtFLEtBQWYsQ0FBcEIsQ0FHQSxNQUZBLE1BQUtGLElBQUwsQ0FBVSxLQUFLRSxLQUFmLEVBQXdCUSxDQUV4QixDQUFPRyxDQUNSLENBMURnQyxDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2lyY3VsYXJyIDxUPiB7XG4gIGRhdGE6IFRbXVxuICBpbmRleDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKGxlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5kYXRhID0gbmV3IEFycmF5PFQ+KGxlbmd0aClcbiAgICB0aGlzLmluZGV4ID0gMFxuICB9XG5cbiAgc3RhdGljIGZyb20gPFQ+IChzb3VyY2U6IFRbXSk6IENpcmN1bGFycjxUPiB7XG4gICAgY29uc3QgYyA9IG5ldyBDaXJjdWxhcnI8VD4oc291cmNlLmxlbmd0aClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7ICsraSkge1xuICAgICAgYy5kYXRhW2ldID0gc291cmNlW2ldXG4gICAgfVxuXG4gICAgcmV0dXJuIGNcbiAgfVxuXG4gIGdldCBsZW5ndGggKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5sZW5ndGhcbiAgfVxuXG4gICogW1N5bWJvbC5pdGVyYXRvcl0gKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgICB5aWVsZCB0aGlzLmRhdGFbKGkgKyB0aGlzLmluZGV4KSAlIHRoaXMuZGF0YS5sZW5ndGhdXG4gICAgfVxuICB9XG5cbiAgZmlsbCAodmFsdWU6IFQpOiB0aGlzIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7ICsraSkge1xuICAgICAgdGhpcy5kYXRhW2ldID0gdmFsdWVcbiAgICB9XG4gICAgdGhpcy5pbmRleCA9IDBcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBjbGVhciAoKTogdGhpcyB7XG4gICAgdGhpcy5kYXRhID0gbmV3IEFycmF5PFQ+KHRoaXMuZGF0YS5sZW5ndGgpXG4gICAgdGhpcy5pbmRleCA9IDBcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzaGlmdCAodmFsdWU6IFQpOiBUIHtcbiAgICBjb25zdCByZXR1cm5WYWx1ZSA9IHRoaXMuZGF0YVt0aGlzLmluZGV4XVxuICAgIHRoaXMuZGF0YVt0aGlzLmluZGV4XSA9IHZhbHVlXG4gICAgdGhpcy5pbmRleCA9ICh0aGlzLmluZGV4ICsgMSkgJSB0aGlzLmRhdGEubGVuZ3RoXG5cbiAgICByZXR1cm4gcmV0dXJuVmFsdWVcbiAgfVxuXG4gIHVuc2hpZnQgKHZhbHVlOiBUKTogVCB7XG4gICAgdGhpcy5pbmRleCA9ICh0aGlzLmluZGV4ICsgdGhpcy5kYXRhLmxlbmd0aCAtIDEpICUgdGhpcy5kYXRhLmxlbmd0aFxuICAgIGNvbnN0IHJldHVyblZhbHVlID0gdGhpcy5kYXRhW3RoaXMuaW5kZXhdXG4gICAgdGhpcy5kYXRhW3RoaXMuaW5kZXhdID0gdmFsdWVcblxuICAgIHJldHVybiByZXR1cm5WYWx1ZVxuICB9XG59XG4iXX0= | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;class Circularr{constructor(a){this.data=Array(a),this.index=0}static from(a){const b=new Circularr(a.length);for(let c=0;c<a.length;++c)b.data[c]=a[c];return b}get length(){return this.data.length}*[Symbol.iterator](){for(let a=0;a<this.data.length;++a)yield this.data[(a+this.index)%this.data.length]}fill(a){for(let b=0;b<this.data.length;++b)this.data[b]=a;return this.index=0,this}clear(){return this.data=Array(this.data.length),this.index=0,this}shift(a){const b=this.data[this.index];return this.data[this.index]=a,this.index=(this.index+1)%this.data.length,b}unshift(a){this.index=(this.index+this.data.length-1)%this.data.length;const b=this.data[this.index];return this.data[this.index]=a,b}slice(a,b){return Circularr.from([...this].slice(a,b))}trim(){const a=[...this];let b=0,c=a.length;for(let c=0;c<a.length&&!(a[c]!==void 0);++c)++b;for(let b=a.length-1;0<=b&&!(a[b]!==void 0);--b)--c;return Circularr.from(a.slice(b,c))}}exports.default=Circularr; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJDaXJjdWxhcnIiLCJjb25zdHJ1Y3RvciIsImxlbmd0aCIsImRhdGEiLCJBcnJheSIsImluZGV4IiwiZnJvbSIsInNvdXJjZSIsImMiLCJpIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJmaWxsIiwidmFsdWUiLCJjbGVhciIsInNoaWZ0IiwicmV0dXJuVmFsdWUiLCJ1bnNoaWZ0Iiwic2xpY2UiLCJiZWdpbkluZGV4IiwiZW5kSW5kZXgiLCJ0cmltIl0sIm1hcHBpbmdzIjoiMkZBQWUsS0FBTUEsQ0FBQUEsU0FBYyxDQUlqQ0MsV0FBVyxDQUFFQyxDQUFGLENBQWtCLENBQzNCLEtBQUtDLElBQUwsQ0FBZ0JDLEtBQWhCLENBQXlCRixDQUF6QixDQUQyQixDQUUzQixLQUFLRyxLQUFMLENBQWEsQ0FDZCxDQUVELE1BQU9DLENBQUFBLElBQVAsQ0FBaUJDLENBQWpCLENBQTRDLENBQzFDLEtBQU1DLENBQUFBLENBQUMsQ0FBRyxHQUFJUixDQUFBQSxTQUFKLENBQWlCTyxDQUFNLENBQUNMLE1BQXhCLENBQVYsQ0FDQSxJQUFLLEdBQUlPLENBQUFBLENBQUMsQ0FBRyxDQUFiLENBQWdCQSxDQUFDLENBQUdGLENBQU0sQ0FBQ0wsTUFBM0IsQ0FBbUMsRUFBRU8sQ0FBckMsQ0FDRUQsQ0FBQyxDQUFDTCxJQUFGLENBQU9NLENBQVAsRUFBWUYsQ0FBTSxDQUFDRSxDQUFELENBQWxCLENBR0YsTUFBT0QsQ0FBQUEsQ0FDUixDQUVELEdBQUlOLENBQUFBLE1BQUosRUFBc0IsQ0FDcEIsTUFBTyxNQUFLQyxJQUFMLENBQVVELE1BQ2xCLENBRUQsRUFBR1EsTUFBTSxDQUFDQyxRQUFWLEdBQXVCLENBQ3JCLElBQUssR0FBSUYsQ0FBQUEsQ0FBQyxDQUFHLENBQWIsQ0FBZ0JBLENBQUMsQ0FBRyxLQUFLTixJQUFMLENBQVVELE1BQTlCLENBQXNDLEVBQUVPLENBQXhDLENBQ0UsS0FBTSxNQUFLTixJQUFMLENBQVUsQ0FBQ00sQ0FBQyxDQUFHLEtBQUtKLEtBQVYsRUFBbUIsS0FBS0YsSUFBTCxDQUFVRCxNQUF2QyxDQUVULENBRURVLElBQUksQ0FBRUMsQ0FBRixDQUFrQixDQUNwQixJQUFLLEdBQUlKLENBQUFBLENBQUMsQ0FBRyxDQUFiLENBQWdCQSxDQUFDLENBQUcsS0FBS04sSUFBTCxDQUFVRCxNQUE5QixDQUFzQyxFQUFFTyxDQUF4QyxDQUNFLEtBQUtOLElBQUwsQ0FBVU0sQ0FBVixFQUFlSSxDQUFmLENBSUYsTUFGQSxNQUFLUixLQUFMLENBQWEsQ0FFYixDQUFPLElBQ1IsQ0FFRFMsS0FBSyxFQUFVLENBSWIsTUFIQSxNQUFLWCxJQUFMLENBQWdCQyxLQUFoQixDQUF5QixLQUFLRCxJQUFMLENBQVVELE1BQW5DLENBR0EsQ0FGQSxLQUFLRyxLQUFMLENBQWEsQ0FFYixDQUFPLElBQ1IsQ0FFRFUsS0FBSyxDQUFFRixDQUFGLENBQWUsQ0FDbEIsS0FBTUcsQ0FBQUEsQ0FBVyxDQUFHLEtBQUtiLElBQUwsQ0FBVSxLQUFLRSxLQUFmLENBQXBCLENBSUEsTUFIQSxNQUFLRixJQUFMLENBQVUsS0FBS0UsS0FBZixFQUF3QlEsQ0FHeEIsQ0FGQSxLQUFLUixLQUFMLENBQWEsQ0FBQyxLQUFLQSxLQUFMLENBQWEsQ0FBZCxFQUFtQixLQUFLRixJQUFMLENBQVVELE1BRTFDLENBQU9jLENBQ1IsQ0FFREMsT0FBTyxDQUFFSixDQUFGLENBQWUsQ0FDcEIsS0FBS1IsS0FBTCxDQUFhLENBQUMsS0FBS0EsS0FBTCxDQUFhLEtBQUtGLElBQUwsQ0FBVUQsTUFBdkIsQ0FBZ0MsQ0FBakMsRUFBc0MsS0FBS0MsSUFBTCxDQUFVRCxNQUR6QyxDQUVwQixLQUFNYyxDQUFBQSxDQUFXLENBQUcsS0FBS2IsSUFBTCxDQUFVLEtBQUtFLEtBQWYsQ0FBcEIsQ0FHQSxNQUZBLE1BQUtGLElBQUwsQ0FBVSxLQUFLRSxLQUFmLEVBQXdCUSxDQUV4QixDQUFPRyxDQUNSLENBRURFLEtBQUssQ0FBRUMsQ0FBRixDQUF1QkMsQ0FBdkIsQ0FBd0QsQ0FDM0QsTUFBT3BCLENBQUFBLFNBQVMsQ0FBQ00sSUFBVixDQUFlLENBQUMsR0FBRyxJQUFKLEVBQVVZLEtBQVYsQ0FBZ0JDLENBQWhCLENBQTRCQyxDQUE1QixDQUFmLENBQ1IsQ0FFREMsSUFBSSxFQUFrQixDQUNwQixLQUFNbEIsQ0FBQUEsQ0FBSSxDQUFHLENBQUMsR0FBRyxJQUFKLENBQWIsQ0FEb0IsR0FFaEJnQixDQUFBQSxDQUFVLENBQUcsQ0FGRyxDQUdoQkMsQ0FBUSxDQUFHakIsQ0FBSSxDQUFDRCxNQUhBLENBS3BCLElBQUssR0FBSU8sQ0FBQUEsQ0FBQyxDQUFHLENBQWIsQ0FBZ0JBLENBQUMsQ0FBR04sQ0FBSSxDQUFDRCxNQUF6QixJQUNNQyxDQUFJLENBQUNNLENBQUQsQ0FBSixTQUROLEVBQWlDLEVBQUVBLENBQW5DLENBSUUsRUFBRVUsQ0FKSixDQU9BLElBQUssR0FBSVYsQ0FBQUEsQ0FBQyxDQUFHTixDQUFJLENBQUNELE1BQUwsQ0FBYyxDQUEzQixDQUFtQyxDQUFMLEVBQUFPLENBQTlCLElBQ01OLENBQUksQ0FBQ00sQ0FBRCxDQUFKLFNBRE4sRUFBc0MsRUFBRUEsQ0FBeEMsQ0FJRSxFQUFFVyxDQUpKLENBT0EsTUFBT3BCLENBQUFBLFNBQVMsQ0FBQ00sSUFBVixDQUFlSCxDQUFJLENBQUNlLEtBQUwsQ0FBV0MsQ0FBWCxDQUF1QkMsQ0FBdkIsQ0FBZixDQUNSLENBcEZnQyxDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2lyY3VsYXJyIDxUPiB7XG4gIGRhdGE6IFRbXVxuICBpbmRleDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IgKGxlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5kYXRhID0gbmV3IEFycmF5PFQ+KGxlbmd0aClcbiAgICB0aGlzLmluZGV4ID0gMFxuICB9XG5cbiAgc3RhdGljIGZyb20gPFQ+IChzb3VyY2U6IFRbXSk6IENpcmN1bGFycjxUPiB7XG4gICAgY29uc3QgYyA9IG5ldyBDaXJjdWxhcnI8VD4oc291cmNlLmxlbmd0aClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7ICsraSkge1xuICAgICAgYy5kYXRhW2ldID0gc291cmNlW2ldXG4gICAgfVxuXG4gICAgcmV0dXJuIGNcbiAgfVxuXG4gIGdldCBsZW5ndGggKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5sZW5ndGhcbiAgfVxuXG4gICogW1N5bWJvbC5pdGVyYXRvcl0gKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgICB5aWVsZCB0aGlzLmRhdGFbKGkgKyB0aGlzLmluZGV4KSAlIHRoaXMuZGF0YS5sZW5ndGhdXG4gICAgfVxuICB9XG5cbiAgZmlsbCAodmFsdWU6IFQpOiB0aGlzIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7ICsraSkge1xuICAgICAgdGhpcy5kYXRhW2ldID0gdmFsdWVcbiAgICB9XG4gICAgdGhpcy5pbmRleCA9IDBcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBjbGVhciAoKTogdGhpcyB7XG4gICAgdGhpcy5kYXRhID0gbmV3IEFycmF5PFQ+KHRoaXMuZGF0YS5sZW5ndGgpXG4gICAgdGhpcy5pbmRleCA9IDBcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzaGlmdCAodmFsdWU6IFQpOiBUIHtcbiAgICBjb25zdCByZXR1cm5WYWx1ZSA9IHRoaXMuZGF0YVt0aGlzLmluZGV4XVxuICAgIHRoaXMuZGF0YVt0aGlzLmluZGV4XSA9IHZhbHVlXG4gICAgdGhpcy5pbmRleCA9ICh0aGlzLmluZGV4ICsgMSkgJSB0aGlzLmRhdGEubGVuZ3RoXG5cbiAgICByZXR1cm4gcmV0dXJuVmFsdWVcbiAgfVxuXG4gIHVuc2hpZnQgKHZhbHVlOiBUKTogVCB7XG4gICAgdGhpcy5pbmRleCA9ICh0aGlzLmluZGV4ICsgdGhpcy5kYXRhLmxlbmd0aCAtIDEpICUgdGhpcy5kYXRhLmxlbmd0aFxuICAgIGNvbnN0IHJldHVyblZhbHVlID0gdGhpcy5kYXRhW3RoaXMuaW5kZXhdXG4gICAgdGhpcy5kYXRhW3RoaXMuaW5kZXhdID0gdmFsdWVcblxuICAgIHJldHVybiByZXR1cm5WYWx1ZVxuICB9XG5cbiAgc2xpY2UgKGJlZ2luSW5kZXg/OiBudW1iZXIsIGVuZEluZGV4PzogbnVtYmVyKTogQ2lyY3VsYXJyPFQ+IHtcbiAgICByZXR1cm4gQ2lyY3VsYXJyLmZyb20oWy4uLnRoaXNdLnNsaWNlKGJlZ2luSW5kZXgsIGVuZEluZGV4KSlcbiAgfVxuXG4gIHRyaW0gKCk6IENpcmN1bGFycjxUPiB7XG4gICAgY29uc3QgZGF0YSA9IFsuLi50aGlzXVxuICAgIGxldCBiZWdpbkluZGV4ID0gMFxuICAgIGxldCBlbmRJbmRleCA9IGRhdGEubGVuZ3RoXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChkYXRhW2ldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgICsrYmVnaW5JbmRleFxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBkYXRhLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICBpZiAoZGF0YVtpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICAtLWVuZEluZGV4XG4gICAgfVxuXG4gICAgcmV0dXJuIENpcmN1bGFyci5mcm9tKGRhdGEuc2xpY2UoYmVnaW5JbmRleCwgZW5kSW5kZXgpKVxuICB9XG59XG4iXX0= |
{ | ||
"name": "circularr", | ||
"version": "0.1.5", | ||
"version": "0.2.0", | ||
"description": "Circular fixed size array", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
101
readme.md
@@ -1,8 +0,8 @@ | ||
## Circularr | ||
Circular fixed size array | ||
# Circularr | ||
Fixed size array | ||
### Install | ||
## Install | ||
`npm i circularr` | ||
### Usage | ||
## Usage | ||
```js | ||
@@ -15,3 +15,3 @@ import Circularr from 'circularr' | ||
// Create new with fixed size | ||
const arr = new Circular(3) // [undefined, undefined, undefined] | ||
const arr = new Circularr(3) // [undefined, undefined, undefined] | ||
@@ -29,24 +29,5 @@ // fill using value | ||
### Api | ||
```ts | ||
class Circularr<T> { | ||
## Api | ||
// create Circularr | ||
constructor(length: number) | ||
static from<T>(source: T[]): Circularr<T> | ||
// property | ||
readonly length: number | ||
// iterable | ||
[Symbol.iterator](): IterableIterator<T> | ||
// methods | ||
fill(value: T): this | ||
shift(value: T): T | ||
unshift(value: T): T | ||
} | ||
``` | ||
#### Fill | ||
### Fill | ||
`fill(value: T): this` | ||
@@ -56,8 +37,9 @@ | ||
```js | ||
const circularr = new Circularr(3) // [undefined, undefined, undefined] | ||
const array = new Circularr(3) // [undefined, undefined, undefined] | ||
circularr.fill(0) // [0, 0, 0] | ||
/* mutate fill */ | ||
array.fill(0) // [0, 0, 0] | ||
``` | ||
#### Shift | ||
### Shift | ||
`shift(value: T): T` | ||
@@ -67,11 +49,11 @@ | ||
```js | ||
const circularr = new Circularr(3).fill(0) | ||
const array = new Circularr(3).fill(0) | ||
circularr.shift(8) // [0, 0, 8] => 0 | ||
circularr.shift(16) // [0, 8, 16] => 0 | ||
circularr.shift(32) // [8, 16, 32] => 0 | ||
circularr.shift(64) // [16, 32, 64] => 8 | ||
circularr.length // 3 | ||
array.shift(8) // [0, 0, 8] => 0 | ||
array.shift(16) // [0, 8, 16] => 0 | ||
array.shift(32) // [8, 16, 32] => 0 | ||
array.shift(64) // [16, 32, 64] => 8 | ||
array.length // 3 | ||
``` | ||
#### Unshift | ||
### Unshift | ||
`unshift(value: T): T` | ||
@@ -81,26 +63,49 @@ | ||
```js | ||
const circularr = new Circularr(3).fill(0) | ||
const array = new Circularr(3).fill(0) | ||
circularr.unshift(8) // [8, 0, 0] => 0 | ||
circularr.unshift(16) // [16, 8, 0] => 0 | ||
circularr.unshift(32) // [32, 16, 8] => 0 | ||
circularr.unshift(64) // [64, 32, 16] => 8 | ||
circularr.length // 3 | ||
array.unshift(8) // [8, 0, 0] => 0 | ||
array.unshift(16) // [16, 8, 0] => 0 | ||
array.unshift(32) // [32, 16, 8] => 0 | ||
array.unshift(64) // [64, 32, 16] => 8 | ||
array.length // 3 | ||
``` | ||
#### Iterable | ||
`Circular` implements `iterable` protocol, so it can be used with any standard iterable syntax | ||
### Slice | ||
`slice(beginIndex?: number, endIndex?: number): Circularr<T>` | ||
`slice` does works the same way as Array.slice(). | ||
```js | ||
const circularr = Circularr.from([1, 2, 3]) | ||
const array = Circularr.from([1, 2, 3, 4]) | ||
const sliced = array.slice(1, 3) // [2, 3] | ||
``` | ||
### Trim | ||
`trim(): Circularr<T>` | ||
`trim` returns new `Circularr` with removed `undefined` values from both ends. | ||
```js | ||
const array = new Circularr<number>(5) | ||
array.shift(1) | ||
array.shift(2) | ||
const trimmed = array.trim() // [1, 2] | ||
``` | ||
### Iterable | ||
`Circularr` implements `iterable` protocol, so it can be used with any standard iterable syntax | ||
```js | ||
const array = Circularr.from([1, 2, 3]) | ||
// array destructuring | ||
const [firstValue] = circularr | ||
const [firstValue] = array | ||
// destructuring copy | ||
const copyToArray = [...circularr] | ||
const copyToArray = [...array] | ||
// for..of syntax | ||
for (let value of circularr) { | ||
for (let value of array) { | ||
console.log(value) | ||
} | ||
``` |
12306
19
107