summaryrefslogtreecommitdiff
path: root/scripts/util.js
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/util.js')
-rw-r--r--scripts/util.js45
1 files changed, 34 insertions, 11 deletions
diff --git a/scripts/util.js b/scripts/util.js
index 4eb94266..4af7a7cf 100644
--- a/scripts/util.js
+++ b/scripts/util.js
@@ -1,12 +1,39 @@
-function set_from_array(a) {
+/*
+ Craziness to deal with the bolted on module systems that we use:
+ In browser: require.js, it uses a global function named 'define'
+ On server for tests: Node, it provides a module definition time object named 'exports'
+*/
+(function(factory) {
+ if (typeof define != 'undefined') {
+ define('util', factory);
+ } else {
+ if (typeof exports == 'object') {
+ var obj = factory();
+ for (var i in obj) {
+ exports[i] = obj[i];
+ }
+ }
+ }
+})(function() {
+return {
+
+set_from_array: function (a) {
var ret = {};
for (var k = 0 ; k < a.length ; ++k) {
ret[a[k]] = 1;
}
return ret;
-}
+},
+
+set_from_object: function(o) {
+ var ret = {}
+ for (var k in o) {
+ ret[k] = 1;
+ }
+ return ret;
+},
-function set_diff(sa, sb) {
+set_diff: function(sa, sb) {
var ret = {a_b:[], b_a:[]};
var i;
for (i in sa) {
@@ -20,16 +47,12 @@ function set_diff(sa, sb) {
}
}
return ret;
-}
+},
-function array_diff(aa, ab) {
+array_diff: function(aa, ab) {
var sa = set_from_array(aa);
var sb = set_from_array(ab);
return set_diff(sa, sb);
-}
+},
-if (typeof(exports) != 'undefined') {
- exports.set_diff = set_diff;
- exports.array_diff = array_diff;
- exports.set_from_array = set_from_array;
-}
+}});