; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
/** | |
* GraphemerIterator | |
* | |
* Takes a string and a "BreakHandler" method during initialisation | |
* and creates an iterable object that returns individual graphemes. | |
* | |
* @param str {string} | |
* @return GraphemerIterator | |
*/ | |
class GraphemerIterator { | |
constructor(str, nextBreak) { | |
this._index = 0; | |
this._str = str; | |
this._nextBreak = nextBreak; | |
} | |
[Symbol.iterator]() { | |
return this; | |
} | |
next() { | |
let brk; | |
if ((brk = this._nextBreak(this._str, this._index)) < this._str.length) { | |
const value = this._str.slice(this._index, brk); | |
this._index = brk; | |
return { value: value, done: false }; | |
} | |
if (this._index < this._str.length) { | |
const value = this._str.slice(this._index); | |
this._index = this._str.length; | |
return { value: value, done: false }; | |
} | |
return { value: undefined, done: true }; | |
} | |
} | |
exports.default = GraphemerIterator; | |