diff options
| author | Alon Levy <alon@pobox.com> | 2014-12-16 17:37:42 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2014-12-16 17:37:42 +0200 |
| commit | ade19de410e0a789a921ec1666b278b2a64176d6 (patch) | |
| tree | c4c54b106de93609ca7bb70a20fd4be696715dbe /src/client/util.js | |
| parent | c7d026b1d504323a8c61d51b726e5e8d2337fc4b (diff) | |
moving files around after repository merger
Diffstat (limited to 'src/client/util.js')
| -rw-r--r-- | src/client/util.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/client/util.js b/src/client/util.js new file mode 100644 index 00000000..3fd4aecb --- /dev/null +++ b/src/client/util.js @@ -0,0 +1,72 @@ +"use strict" + +define(function() { + + function assert(condition, message) { + if (false == condition) { + message = message || "Assertion failed"; + if (typeof Error !== "undefined") { + throw new Error(message); + } + throw message; // Fallback + } + } + + function set_from_array(a) { + var ret = {}; + for (var k = 0; k < a.length; ++k) { + ret[a[k]] = 1; + } + return ret; + } + + function set_from_object(o) { + var ret = {} + for ( var k in o) { + ret[k] = 1; + } + return ret; + } + + function set_diff(sa, sb) { + var ret = { + a_b : [], + b_a : [] + }; + var i; + for (i in sa) { + if (!(i in sb)) { + ret.a_b.push(i); + } + } + for (i in sb) { + if (!(i in sa)) { + ret.b_a.push(i); + } + } + return ret; + } + + function array_diff(aa, ab) { + var sa = set_from_array(aa); + var sb = set_from_array(ab); + return set_diff(sa, sb); + } + + // TODO: jquery BBQ: $.deparam.querystring().json; + function getParameterByName(name) { + name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); + var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), + results = regex.exec(location.search); + return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); + } + + return { + assert: assert, + set_from_array: set_from_array, + set_from_object: set_from_object, + set_diff: set_diff, + array_diff: array_diff, + getParameterByName: getParameterByName, + }; +}); |
