UNPKG

ion

Version:

ion language ========================

108 lines 3.63 kB
void (function(){var _ion_es6_Map_ = function(module,exports,require){'use strict'; var ion = null; var uniqueCounter = 0; var idName = '_Map_id_'; var getId = function (key) { if (!(key != null)) { return String(key); } if (typeof key === 'string' || typeof key === 'number' || typeof key === 'boolean') { return '_' + key; } var id = key[idName]; if (!(id != null)) { var def = Object.getOwnPropertyDescriptor(key, idName); if (def != null) { id = def.value; } else { id = ++uniqueCounter; Object.defineProperty(key, idName, { value: id }); } } return id; }; function MapShim(pairs) { if (pairs != null) { throw new Error('Don\'t add items in the constructor, IE implementation of Set breaks this'); } var lookup = {}; var keys = []; var methods = { get: function (key) { return lookup[getId(key)]; }, set: function (key, value) { var id = getId(key); if (!lookup.hasOwnProperty(id)) { keys.push(key); } lookup[id] = value; return value; }, has: function (key) { var id = getId(key); return lookup.hasOwnProperty(id); }, delete: function (key) { var id = getId(key); keys.remove(key); delete lookup[id]; }, clear: function () { lookup = {}; keys = []; }, forEach: function (callback, thisArg) { for (var _i = 0; _i < keys.length; _i++) { var key = keys[_i]; var value = this.get(key); callback.call(thisArg, value, key, this); } } }; for (var key in methods) { var value = methods[key]; Object.defineProperty(this, key, { value: value }); } } if (!((global.Map != null ? global.Map.prototype.forEach : void 0) != null)) { if (global.window) { console.warn('Shimming Map'); } global.Map = MapShim; } var test = exports.test = function () { var Map = global.Map; var map = new Map(); map.set('a', 1); map.set('b', 2); if (!(Object.keys(map).length === 0)) throw new Error('Assertion Failed: (Object.keys(map).length is 0)'); if (!map.has('a')) throw new Error('Assertion Failed: (map.has(\'a\'))'); if (!!map.has('c')) throw new Error('Assertion Failed: (not map.has(\'c\'))'); if (!(map.get('a') === 1)) throw new Error('Assertion Failed: (map.get(\'a\') is 1)'); if (!(map.get('b') === 2)) throw new Error('Assertion Failed: (map.get(\'b\') is 2)'); if (!(map.get('c') === void 0)) throw new Error('Assertion Failed: (map.get(\'c\') is undefined)'); var mykey1 = {}; map.set(mykey1, 'one'); if (!(Object.keys(mykey1).length === 0)) throw new Error('Assertion Failed: (Object.keys(mykey1).length is 0)'); if (!(map.get(mykey1) === 'one')) throw new Error('Assertion Failed: (map.get(mykey1) is "one")'); }; } if (typeof require === 'function') { if (require.register) require.register('ion/es6/Map',_ion_es6_Map_); else _ion_es6_Map_.call(this, module, exports, require); } else { _ion_es6_Map_.call(this); } }).call(this)