bugcore
Version:
bugcore is a JavaScript library that provides a foundational architecture for object oriented JS
95 lines (72 loc) • 2.86 kB
JavaScript
/*
* Copyright (c) 2016 airbug Inc. http://airbug.com
*
* bugcore may be freely distributed under the MIT license.
*/
//-------------------------------------------------------------------------------
// Annotations
//-------------------------------------------------------------------------------
//@Export('MultiSetMap')
//@Require('Class')
//@Require('MultiMap')
//@Require('Set')
//-------------------------------------------------------------------------------
// Context
//-------------------------------------------------------------------------------
require('bugpack').context("*", function(bugpack) {
//-------------------------------------------------------------------------------
// BugPack
//-------------------------------------------------------------------------------
var Class = bugpack.require('Class');
var MultiMap = bugpack.require('MultiMap');
var Set = bugpack.require('Set');
//-------------------------------------------------------------------------------
// 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}
*/
var MultiSetMap = Class.extend(MultiMap, {
_name: "MultiSetMap",
//-------------------------------------------------------------------------------
// Obj Methods
//-------------------------------------------------------------------------------
/**
* @return {*}
*/
clone: function() {
var cloneMultiSetMap = new MultiSetMap();
cloneMultiSetMap.putAll(this);
return cloneMultiSetMap;
},
//-------------------------------------------------------------------------------
// Map Methods
//-------------------------------------------------------------------------------
/**
* @param {*} key
* @param {*} value
* @return {*}
*/
put: function(key, value) {
var valueSet = this.hashTable.get(key);
if (!valueSet) {
valueSet = new Set();
this.hashTable.put(key, valueSet);
}
var result = valueSet.add(value);
if (result) {
return value;
}
return undefined;
}
});
//-------------------------------------------------------------------------------
// Exports
//-------------------------------------------------------------------------------
bugpack.export('MultiSetMap', MultiSetMap);
});