/
utils.js
55 lines (50 loc) · 1.95 KB
/
utils.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
/* Copyright (c) 2017-present, salesforce.com, inc. All rights reserved */
/* Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
var spaces = module.exports.spaces = function(cnt) {
if (cnt == 0) return '';
return ' ' + spaces(cnt-1);
}
// based on https://gist.github.com/alexhawkins/931c0af2d827dd67a3e8
var prettyJSON = module.exports.prettyJSON = function(givenHdr, obj, ndent=0, internalCall=false) {
var rowHdr = givenHdr + spaces(2*ndent);
var xtraHdr = '';
if (!internalCall) xtraHdr = rowHdr;
var arrOfKeyVals = [],
arrVals = [],
objKeys = [];
/*********CHECK FOR PRIMITIVE TYPES**********/
if (typeof obj === 'number' || typeof obj === 'boolean' || obj === null)
return xtraHdr + '' + obj;
else if (typeof obj === 'string')
return xtraHdr + '"' + obj + '"';
/*********CHECK FOR ARRAY**********/
else if (Array.isArray(obj)) {
if (obj[0] === undefined)
return xtraHdr + '[]';
else {
obj.forEach(function(el) {
arrVals.push(prettyJSON(givenHdr, el, ndent, true));
});
return xtraHdr + '[' + arrVals + ']';
}
}
/*********CHECK FOR OBJECT**********/
else if (obj instanceof Object) {
var kvHdr = rowHdr + spaces(2*(ndent+1))
objKeys = Object.keys(obj);
objKeys.forEach(function(key) {
var keyOut = "'" + key + "': ";
var keyValOut = obj[key];
if (keyValOut instanceof Function || typeof keyValOut === undefined)
arrOfKeyVals.push('');
else if (typeof keyValOut === 'string')
arrOfKeyVals.push(keyOut + "'" + keyValOut + "'");
else if (typeof keyValOut === 'boolean' || typeof keValOut === 'number' || keyValOut === null)
arrOfKeyVals.push(keyOut + keyValOut);
else if (keyValOut instanceof Object) {
arrOfKeyVals.push(keyOut + prettyJSON(givenHdr, keyValOut, ndent+1, true));
}
});
return xtraHdr + '{\n' + kvHdr + arrOfKeyVals.join(',\n' + kvHdr) +'\n' + rowHdr + '}';
}
};