40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.UnicodeLineBreak = void 0;
|
|
// tslint:disable-next-line:no-var-requires variable-name
|
|
const LineBreakNext = require("linebreak-next");
|
|
class UnicodeLineBreak {
|
|
constructor(text) {
|
|
this.text = text;
|
|
//
|
|
}
|
|
getResults() {
|
|
const results = [];
|
|
for (const item of this) {
|
|
results.push(item);
|
|
}
|
|
return results;
|
|
}
|
|
[Symbol.iterator]() {
|
|
const text = this.text;
|
|
const lineBreaker = new LineBreakNext(text);
|
|
let last = 0;
|
|
return {
|
|
next: () => {
|
|
const bk = lineBreaker.nextBreak();
|
|
if (!bk) {
|
|
return { value: undefined, done: true };
|
|
}
|
|
const word = text
|
|
.slice(last, bk.position)
|
|
.replace(/(\r?\n)*$/, "");
|
|
const index = last;
|
|
const isLastWord = bk.position === text.length;
|
|
last = bk.position;
|
|
return { value: { word, index, hasLineBreak: bk.required, isLastWord }, done: false };
|
|
},
|
|
};
|
|
}
|
|
}
|
|
exports.UnicodeLineBreak = UnicodeLineBreak;
|