webclient/js/Table.js

43 lines
702 B
JavaScript

import of from UnitJS.Fun;
import {compare, of, proj} from UnitJS.Fun;
function Table(itemMaker, sortCriterion) {
var items = {};
return {
get: get,
getAll: getAll,
insert: insert,
insertAll: insertAll,
remove: remove
};
function get(key) {
return items[key];
}
function getAll(criterion) {
return Object.keys(items)
.map(of(items))
.filter(criterion || function() {return true;})
.sort(compare(proj(sortCriterion)));
}
function insert(key, value) {
items[key] = itemMaker(key, value);
}
function insertAll(newItems) {
for(var key in newItems) {
insert(key, newItems[key]);
}
}
function remove(key) {
delete items[key];
}
}
return {
make: Table
}