UNPKG

bugcore

Version:

bugcore is a JavaScript library that provides a foundational architecture for object oriented JS

101 lines (76 loc) 3.1 kB
/* * Copyright (c) 2016 airbug Inc. http://airbug.com * * bugcore may be freely distributed under the MIT license. */ //------------------------------------------------------------------------------- // Annotations //------------------------------------------------------------------------------- //@Export('MultiListMap') //@Require('Class') //@Require('List') //@Require('MultiMap') //------------------------------------------------------------------------------- // Context //------------------------------------------------------------------------------- require('bugpack').context("*", function(bugpack) { //------------------------------------------------------------------------------- // BugPack //------------------------------------------------------------------------------- var Class = bugpack.require('Class'); var List = bugpack.require('List'); var MultiMap = bugpack.require('MultiMap'); //------------------------------------------------------------------------------- // Declare Class //------------------------------------------------------------------------------- /** * Map info * 1) Supports null values but not undefined values. Undefined values are used to indicate something doesn't exist. * 2) Any value can be used as a key including null but not undefined. * * @class * @extends {MultiMap.<K, V>} * @template K, V */ var MultiListMap = Class.extend(MultiMap, /** @lends {MultiListMap.prototype} */{ _name: "MultiListMap", //------------------------------------------------------------------------------- // Obj Methods //------------------------------------------------------------------------------- /** * @param {boolean} deep * @return {MultiListMap.<K, V>} */ clone: function(deep) { //TODO BRN: Implement "deep" cloning /** @type {MultiListMap.<K, V>} */ var cloneMultiListMap = new MultiListMap(); cloneMultiListMap.putAll(this); return cloneMultiListMap; }, //------------------------------------------------------------------------------- // Map Methods //------------------------------------------------------------------------------- /** * @param {K} key * @param {V} value * @return {V} */ put: function(key, value) { var valueSet = this.getHashTable().get(key); if (!valueSet) { valueSet = new List(); this.getHashTable().put(key, valueSet); } var result = valueSet.add(value); if (result) { return value; } return undefined; } }); //------------------------------------------------------------------------------- // Exports //------------------------------------------------------------------------------- bugpack.export('MultiListMap', MultiListMap); });