server/www/lib.js

52 lines
1.1 KiB
JavaScript
Raw Normal View History

2018-04-11 13:25:24 +02:00
function Lib(ws) {
return {
clearElement: clearElement,
defaultCompare: defaultCompare,
funMap: funMap,
insert: insert,
send: send
};
2018-04-11 13:25:24 +02:00
function clearElement(elem) {
while(elem.firstChild) {
elem.removeChild(elem.firstChild);
}
}
function insert(obj, t, compare, min, max) {
min = min == undefined ? 0 : min;
max = max == undefined ? t.length : max;
compare = compare == undefined ? defaultCompare : compare;
if(max - min < 1) {
return min;
}
var avg = Math.floor((max + min) / 2);
if (compare(obj, t[avg]) < 0) {
return insert(obj, t, compare, min, avg);
} else {
return insert(obj, t, compare, avg+1, max);
}
}
function defaultCompare(a, b) {
if(a < b) {
return -1;
} else if(a > b) {
return 1;
} else {
return 0;
}
}
function funMap(projector, f) {
return function() {
var args = Array.prototype.map.call(arguments, projector);
return f.apply(null, args);
}
}
2018-04-11 13:25:24 +02:00
function send(o) {
ws.send(JSON.stringify(o));
}
}