UNPKG

iter-over

Version:

Sugary iteration utilities and interfaces.

3 lines (2 loc) 1.63 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StringLineIterator=void 0;const abstract_iterator_1=require("../core/abstract-iterator");class StringLineIterator extends abstract_iterator_1.AbstractIterator{constructor(t){super(),this.content=t,this.lineBreakCharacter=StringLineIterator.determineLineBreakStyle(this.content),this.substringStartIndex=0,this.substringEndIndex=-this.lineBreakCharacter.length,this.findNextLineBreak()}static determineLineBreakStyle(t){let e=t.indexOf("\n");return-1===e?-1!==t.indexOf("\r")?"\r":"\r\n":"\r"===t.charAt(e-1)?"\r\n":"\n"}findNextLineBreak(){let t=this.content.indexOf(this.lineBreakCharacter,this.substringEndIndex+1);-1!==t?(this.substringStartIndex=this.substringEndIndex+this.lineBreakCharacter.length,this.substringEndIndex=t):this.content.length>this.substringEndIndex?(this.substringStartIndex=this.substringEndIndex+this.lineBreakCharacter.length,this.substringEndIndex=this.content.length):(this.substringStartIndex=this.content.length,this.substringEndIndex=this.content.length)}hasNext(){return this.substringEndIndex>this.substringStartIndex}next(){if(this.hasNext()){let t=this.content.substring(this.substringStartIndex,this.substringEndIndex).trim();return this.findNextLineBreak(),t}}remove(){}reset(){this.substringStartIndex=0,this.substringEndIndex=-this.lineBreakCharacter.length,this.findNextLineBreak()}toString(t=this.lineBreakCharacter){return t===this.lineBreakCharacter?this.content:this.content.split(this.lineBreakCharacter).join(t)}}exports.StringLineIterator=StringLineIterator; //# sourceMappingURL=string-line-iterator.js.map