1 exports
= module
.exports
= stringify
2 exports
.getSerialize
= serializer
4 function stringify(obj
, replacer
, spaces
, cycleReplacer
) {
5 return JSON
.stringify(obj
, serializer(replacer
, cycleReplacer
), spaces
)
8 function serializer(replacer
, cycleReplacer
) {
9 var stack
= [], keys
= []
11 if (cycleReplacer
== null) cycleReplacer = function(key
, value
) {
12 if (stack
[0] === value
) return "[Circular ~]"
13 return "[Circular ~." + keys
.slice(0, stack
.indexOf(value
)).join(".") + "]"
16 return function(key
, value
) {
17 if (stack
.length
> 0) {
18 var thisPos
= stack
.indexOf(this)
19 ~thisPos
? stack
.splice(thisPos
+ 1) : stack
.push(this)
20 ~thisPos
? keys
.splice(thisPos
, Infinity
, key
) : keys
.push(key
)
21 if (~stack
.indexOf(value
)) value
= cycleReplacer
.call(this, key
, value
)
23 else stack
.push(value
)
25 return replacer
== null ? value
: replacer
.call(this, key
, value
)