summaryrefslogtreecommitdiff
path: root/src/client/util.js
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2014-12-16 17:37:42 +0200
committerAlon Levy <alon@pobox.com>2014-12-16 17:37:42 +0200
commitade19de410e0a789a921ec1666b278b2a64176d6 (patch)
treec4c54b106de93609ca7bb70a20fd4be696715dbe /src/client/util.js
parentc7d026b1d504323a8c61d51b726e5e8d2337fc4b (diff)
moving files around after repository merger
Diffstat (limited to 'src/client/util.js')
-rw-r--r--src/client/util.js72
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,
+ };
+});