27 lines
555 B
JavaScript
27 lines
555 B
JavaScript
"use strict";
|
|
// Utilities for Maps of Sets
|
|
|
|
var Immutable = require('immutable');
|
|
|
|
function add(ms, key, val) {
|
|
return ms.set(key, (ms.get(key) || Immutable.Set()).add(val));
|
|
}
|
|
|
|
function remove(ms, key, val) {
|
|
var oldSet = ms.get(key);
|
|
if (oldSet) {
|
|
var newSet = oldSet.remove(val);
|
|
if (newSet.isEmpty()) {
|
|
ms = ms.remove(key);
|
|
} else {
|
|
ms = ms.set(key, newSet);
|
|
}
|
|
}
|
|
return ms;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
module.exports.add = add;
|
|
module.exports.remove = remove;
|