Blame view
node_modules/es6-set/lib/primitive-iterator.js
1.81 KB
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
'use strict'; var clear = require('es5-ext/array/#/clear') , assign = require('es5-ext/object/assign') , setPrototypeOf = require('es5-ext/object/set-prototype-of') , contains = require('es5-ext/string/#/contains') , d = require('d') , autoBind = require('d/auto-bind') , Iterator = require('es6-iterator') , toStringTagSymbol = require('es6-symbol').toStringTag , defineProperties = Object.defineProperties, keys = Object.keys , unBind = Iterator.prototype._unBind , PrimitiveSetIterator; PrimitiveSetIterator = module.exports = function (set, kind) { if (!(this instanceof PrimitiveSetIterator)) { return new PrimitiveSetIterator(set, kind); } Iterator.call(this, keys(set.__setData__), set); kind = (!kind || !contains.call(kind, 'key+value')) ? 'value' : 'key+value'; defineProperties(this, { __kind__: d('', kind), __data__: d('w', set.__setData__) }); }; if (setPrototypeOf) setPrototypeOf(PrimitiveSetIterator, Iterator); PrimitiveSetIterator.prototype = Object.create(Iterator.prototype, assign({ constructor: d(PrimitiveSetIterator), _resolve: d(function (i) { var value = this.__data__[this.__list__[i]]; return (this.__kind__ === 'value') ? value : [value, value]; }), _unBind: d(function () { this.__data__ = null; unBind.call(this); }), toString: d(function () { return '[object Set Iterator]'; }) }, autoBind({ _onAdd: d(function (key) { this.__list__.push(key); }), _onDelete: d(function (key) { var index = this.__list__.lastIndexOf(key); if (index < this.__nextIndex__) return; this.__list__.splice(index, 1); }), _onClear: d(function () { clear.call(this.__list__); this.__nextIndex__ = 0; }) }))); Object.defineProperty(PrimitiveSetIterator.prototype, toStringTagSymbol, d('c', 'Set Iterator')); |