iterize
Version:
Use JavaScript Iterator, Easily
2 lines • 3.23 kB
JavaScript
(function(a,b){if("function"==typeof define&&define.amd)define(["exports","@babel/runtime/helpers/classCallCheck","@babel/runtime/helpers/createClass","@babel/runtime/helpers/defineProperty","./ErrorModels"],b);else if("undefined"!=typeof exports)b(exports,require("@babel/runtime/helpers/classCallCheck"),require("@babel/runtime/helpers/createClass"),require("@babel/runtime/helpers/defineProperty"),require("./ErrorModels"));else{var c={exports:{}};b(c.exports,a.babelRuntimeHelpersClassCallCheck,a.babelRuntimeHelpersCreateClass,a.babelRuntimeHelpersDefineProperty,a.ErrorModels),a.Iterators=c.exports}})(this,function(a,b,c,d,e){"use strict";var f=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(a,"__esModule",{value:!0}),a.RangeIterator=a.RepeatIterator=a.ArrayIterator=a.PrimitiveIterator=void 0,b=f(b),c=f(c),d=f(d);var g=Symbol.iterator,h=/*#__PURE__*/function(){function a(c){(0,b.default)(this,a),(0,d.default)(this,"value",void 0),(0,d.default)(this,"done",!1),this.value=c}return(0,c.default)(a,[{key:g,value:function a(){return this}},{key:"next",value:function a(){return this.done?{value:void 0,done:!0}:(this.done=!0,{value:this.value,done:!1})}},{key:"clone",value:function b(){return new a(this.value)}}]),a}();a.PrimitiveIterator=h;var i=Symbol.iterator,j=/*#__PURE__*/function(){// parameter array should be immutable
function a(c){(0,b.default)(this,a),(0,d.default)(this,"arr",void 0),(0,d.default)(this,"arrIterator",void 0),this.arr=c,this.arrIterator=c[Symbol.iterator]()}return(0,c.default)(a,[{key:i,value:function a(){return this}},{key:"next",value:function a(){return this.arrIterator.next()}},{key:"clone",value:function b(){return new a(this.arr)}}]),a}();a.ArrayIterator=j;var k=Symbol.iterator,l=/*#__PURE__*/function(){function a(c,e){(0,b.default)(this,a),(0,d.default)(this,"iterator",void 0),(0,d.default)(this,"repeatLimit",void 0),(0,d.default)(this,"repeatCount",1),this.iterator=c,this.repeatLimit=e}return(0,c.default)(a,[{key:k,value:function a(){return this}},{key:"next",value:function(){var b=this.iterator.next();if(!b.done)return b;if(this.repeatLimit!==a.FOREVER&&!(this.repeatCount<this.repeatLimit))return{value:void 0,done:!0};if(this.iterator=this.iterator.clone(),b=this.iterator.next(),b.done)throw new e.BehaviorError("Iterator should iterable more than once.");return this.repeatCount++,b}},{key:"clone",value:function b(){return new a(this.iterator,this.repeatLimit)}}]),a}();a.RepeatIterator=l,(0,d.default)(l,"FOREVER",-1);var m=Symbol.iterator,n=/*#__PURE__*/function(){function a(c,e,f){(0,b.default)(this,a),(0,d.default)(this,"start",void 0),(0,d.default)(this,"end",void 0),(0,d.default)(this,"step",void 0),(0,d.default)(this,"current",void 0),this.start=c,this.end=e,this.step=f,this.current=c}return(0,c.default)(a,[{key:m,value:function a(){return this}},{key:"next",value:function a(){if(this.hasNext()){var b=this.current;return this.current=this.step(this.current),{value:b,done:!1}}return{value:void 0,done:!0}}},{key:"hasNext",value:function a(){return this.start<this.end?this.current<this.end:this.current>this.end}},{key:"clone",value:function b(){return new a(this.start,this.end,this.step)}}]),a}();a.RangeIterator=n});