diff options
author | alon@honor <none@none> | 2010-08-25 21:01:10 -0700 |
---|---|---|
committer | alon@honor <none@none> | 2010-08-25 21:01:10 -0700 |
commit | a9256705ada4ae335870cdb60ae7f9c8373038e3 (patch) | |
tree | 2c7aeabbdf38a9fea035d6680f8ad31b2a7e0d46 /src/utility.js | |
parent | f6d98e5d038ee80177b9414e5e34ddc05857627b (diff) |
the code
Diffstat (limited to 'src/utility.js')
-rw-r--r-- | src/utility.js | 82 |
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); + } + } +} + |