| "use strict"; |
| 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; |