/
OtherUtils.js
67 lines (59 loc) · 1.8 KB
/
OtherUtils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
* Created by JetBrains WebStorm.
* User: user
* Date: 11/12/11
* Time: 14:39
* To change this template use File | Settings | File Templates.
*/
var OtherUtils = {};
OtherUtils.dumpJson = function(v, opts){
var _opts={ksort:false, indent:false, funcsrc:false, undefined2str:false, maxDepth:10};
for(var k in opts) _opts[k]=opts[k];
var d=parseInt(_opts.maxDepth);
_opts.maxDepth=(d>0)?(d<100)?d:100:1;
var f1=(!!_opts.indent)?function(d){
for(var s='\n', i=0; i<=d; i++) s+=' ';
return s
}:function(){ return ''; };
var f2ps=[[/\\/g,"\\\\"],[/\n/g,"\\n"],[/\r/g ,"\\r"],[/\t/g,"\\t"],[/(")/g,"\\$1"]];
var f2=function(v){
for(var i=0;i<f2ps.length;i++) v=v.replace.apply(v,f2ps[i]);
return v;
}
var fn=function(v,d){
if(d>=_opts.maxDepth) throw 'depth '+_opts.maxDepth+' orver error.';
if(null===v) return 'null';
switch(typeof v){
case 'undefined': return (!!_opts.undefined2str)?'"undefined"':'null';
case 'boolean': return v?'true':'false';
case 'function': v=(!!_opts.funcsrc)?v.toSource():'function()';
case 'string': return '"'+f2(v)+'"';
case 'object':
var s=[];
if(v instanceof Array){
for(var i=0; i<v.length; i++) s.push(fn(v[i],d+1));
return '['+f1(d)+s.join(','+f1(d))+f1(d-1)+']';
}
var ks=[];
for(var k in v) ks.push(k);
if(!!_opts.ksort) ks.sort();
for(var i=0; i<ks.length; i++) s.push(fn(ks[i],d+1)+':'+fn(v[ks[i]],d+1));
return '{'+f1(d)+s.join(','+f1(d))+f1(d-1)+'}';
}
return v;
}
return fn(v,0);
};
OtherUtils.unique = function(array) {
var storage = {};
var uniqueArray = [];
var i, value;
for (i = 0; i < array.length; i++) {
value = array[i];
if (!(value in storage)) {
storage[value] = true;
uniqueArray.push(value);
}
}
return uniqueArray;
}