Spaces:
Runtime error
Runtime error
; | |
var compact = require("../array/#/compact") | |
, isObject = require("../object/is-object") | |
, toArray = require("../object/to-array") | |
, isArray = Array.isArray | |
, stringify = JSON.stringify; | |
module.exports = function self(value /*, replacer, space*/) { | |
var replacer = arguments[1], space = arguments[2]; | |
try { | |
return stringify(value, replacer, space); | |
} catch (e) { | |
if (!isObject(value)) return null; | |
if (typeof value.toJSON === "function") return null; | |
if (isArray(value)) { | |
return ( | |
"[" + | |
compact.call(value.map(function (item) { return self(item, replacer, space); })) + | |
"]" | |
); | |
} | |
return ( | |
"{" + | |
compact | |
.call( | |
toArray(value, function (item, key) { | |
item = self(item, replacer, space); | |
if (!item) return null; | |
return stringify(key) + ":" + item; | |
}) | |
) | |
.join(",") + | |
"}" | |
); | |
} | |
}; | |