summaryrefslogtreecommitdiff
path: root/src/util.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.js')
-rw-r--r--src/util.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/util.js b/src/util.js
new file mode 100644
index 00000000..3113474b
--- /dev/null
+++ b/src/util.js
@@ -0,0 +1,52 @@
+"use strict"
+
+define(function() {
+
+ 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);
+ }
+
+ return {
+ set_from_array : set_from_array,
+ set_from_object : set_from_object,
+ set_diff : set_diff,
+ array_diff : array_diff
+ };
+});