diff options
Diffstat (limited to 'node_modules/core-js/modules/es.string.iterator.js')
| -rw-r--r-- | node_modules/core-js/modules/es.string.iterator.js | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/node_modules/core-js/modules/es.string.iterator.js b/node_modules/core-js/modules/es.string.iterator.js new file mode 100644 index 0000000..8a268e0 --- /dev/null +++ b/node_modules/core-js/modules/es.string.iterator.js @@ -0,0 +1,29 @@ +'use strict'; +var charAt = require('../internals/string-multibyte').charAt; +var InternalStateModule = require('../internals/internal-state'); +var defineIterator = require('../internals/define-iterator'); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: String(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = charAt(string, index); + state.index += point.length; + return { value: point, done: false }; +}); |
