aboutsummaryrefslogtreecommitdiff
path: root/src/utility.js
diff options
context:
space:
mode:
authoralon@honor <none@none>2010-08-25 21:01:10 -0700
committeralon@honor <none@none>2010-08-25 21:01:10 -0700
commita9256705ada4ae335870cdb60ae7f9c8373038e3 (patch)
tree2c7aeabbdf38a9fea035d6680f8ad31b2a7e0d46 /src/utility.js
parentf6d98e5d038ee80177b9414e5e34ddc05857627b (diff)
the code
Diffstat (limited to 'src/utility.js')
-rw-r--r--src/utility.js82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/utility.js b/src/utility.js
new file mode 100644
index 00000000..447c52a6
--- /dev/null
+++ b/src/utility.js
@@ -0,0 +1,82 @@
+
+function dump(item) {
+ try {
+ return JSON.stringify(item);
+ } catch(e) {
+ var ret = [];
+ for (var i in item) {
+ var j = item[i];
+ if (typeof j === 'string' || typeof j === 'number') {
+ ret.push(i + ': ' + j);
+ } else {
+ ret.push(i + ': [?]');
+ }
+ }
+ return ret.join(', ');
+ }
+}
+
+function dumpKeys(item) {
+ var ret = [];
+ for (var i in item) {
+ var j = item[i];
+ if (typeof j === 'string' || typeof j === 'number') {
+ ret.push(i + ': ' + j);
+ } else {
+ ret.push(i + ': [?]');
+ }
+ }
+ return ret.join(', ');
+}
+
+function assertEq(a, b) {
+ if (a !== b) {
+ print("Stack: " + new Error().stack);
+ throw "Should have been equal: " + a + " : " + b;
+ }
+}
+
+function assertTrue(a) {
+ assertEq(!!a, true);
+}
+
+function dedup(items, ident) {
+ var seen = {};
+ if (ident) {
+ return items.filter(function(item) {
+ if (seen[item[ident]]) return false;
+ seen[item[ident]] = true;
+ return true;
+ });
+ } else {
+ return items.filter(function(item) {
+ if (seen[item]) return false;
+ seen[item] = true;
+ return true;
+ });
+ }
+}
+
+function range(size) {
+ var ret = [];
+ for (var i = 0; i < size; i++) ret.push(i);
+ return ret;
+}
+
+function searchable() {
+ var ret = {};
+ for (var i = 0; i < arguments.length; i++) {
+ ret[arguments[i]] = 0;
+ }
+ return ret;
+}
+
+function walkJSON(item, func) {
+ func(item);
+ for (x in item) {
+ if (typeof item[x] === 'object') {
+ walkJSON(item[x], func);
+ }
+ }
+}
+