UNPKG

immutable-js

Version:
64 lines (54 loc) 1.54 kB
import { SetCollection } from './Collection'; import { NativeObject, isNative } from './Native'; export var SET_TYPEDEF = '[SetCollection Set]'; export class Set extends SetCollection { constructor(object) { return makeSet(object); } toSet() { return this; } toString() { return this.__toString('Set {', this.__keys.join(','), '}'); } set(key) { var copy = this.__internal.__clone(); copy[key] = true; console.log(copy); return new Set( ); } unset(key) { var reduc = delete this.__internal.clone()[key]; return new Set(reduc); } __iterate(handle, reverse) { var object = this.__internal; var keys = this.__keys; var maxIndex = keys.length - 1; for(var n = 0; n <= maxIndex; n++) { let key = keys[reverse ? maxIndex - n: n]; if(handle(object[key], key, this) === false) { return n + 1; } } return n; } } var EMPTY_SET; function emptySet() { return EMPTY_SET || (EMPTY_SET = makeSet()); } function makeSet(map, ownerID) { var set = Object.create(Set.prototype); set.__internal = new NativeObject(); set.__ownerID = ownerID; if(map && isNative(map)) { set.__internal = map; } else if(map && typeof map === 'object') { set.__internal = set.__internal.extend(map); } set.__keys = Object.keys(set.__internal); set.size = set.__keys.length; return set; }