247
248
public words(wordDefinition: RegExp): Iterable<string> {
250
>
const lines = this._lines;
251
>
const wordenize = this._wordenize.bind(this);
252
>
253
>
let lineNumber = 0;
254
>
let lineText = '';
255
>
let wordRangesIdx = 0;
256
>
let wordRanges: IWordRange[] = [];
257
>
258
>
return {
259
>
*[Symbol.iterator]() {
260
>
while (true) {
261
>
if (wordRangesIdx < wordRanges.length) {
262
>
const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);
263
>
wordRangesIdx += 1;
264
>
yield value;
265
>
} else {
266
>
if (lineNumber < lines.length) {
267
>
lineText = lines[lineNumber];
268
>
wordRanges = wordenize(lineText, wordDefinition);
269
>
wordRangesIdx = 0;
270
>
lineNumber += 1;
271
>
} else {
272
>
break;
273
>
}
274
>
}
275
>
}
276
>
}
277
>
};
278
>
}
279
280
public getLineWords(lineNumber: number, wordDefinition: RegExp): IWordAtPosition[] {