index.js
1.27 KB
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
"use strict";
var inspect = require('util').inspect
function isType(type) {
return function(obj) {
return {}.toString.call(obj) == '[object ' + type + ']'
}
}
var isObject = isType("Object")
var isFunction = isType("Function")
var isArray = Array.isArray || isType("Array")
var isString = isType("String")
var isDate = isType("Date")
function tostr(data /* private params*/, indent) {
indent = indent || 2
var oldBr = '\n' + new Array(indent - 1).join(' ')
var br = oldBr + ' '
if (isObject(data)) {
var keys = Object.keys(data)
var len = keys.length
var rt = '{'
keys.forEach(function(key, idx) {
var item = data[key]
rt += br + key + ': ' + tostr(item, indent + 2)
if (idx < len - 1) rt += ','
})
rt += oldBr + '}'
return rt
}
if (isArray(data)) {
var len = data.length
var rt = '['
data.forEach(function(item, idx) {
rt += br + tostr(item, indent + 2)
if (idx < len - 1) rt += ','
})
rt += oldBr + ']'
return rt
}
if (isFunction(data)) {
return data.toString()
}
if (isDate(data)) {
return "new Date('" + data.toString() + "')"
}
if (isString(data)) {
return inspect(data).replace(/^\[String: (.*)\]$/, '$1')
}
return data
}
module.exports = tostr