Sha256: 037642bd205d5b641de9872e97b9607c4c6deaea89e1098c7a4cf2317987b593
Contents?: true
Size: 935 Bytes
Versions: 46
Compression:
Stored size: 935 Bytes
Contents
"use strict"; var forEach = require("./for-each") , isPlainObject = require("./is-plain-object") , ensureValue = require("./valid-value") , isArray = Array.isArray; var copyValue = function (value, ancestors, ancestorsCopy) { var mode; if (isPlainObject(value)) mode = "object"; else if (isArray(value)) mode = "array"; if (!mode) return value; var copy = ancestorsCopy[ancestors.indexOf(value)]; if (copy) return copy; copy = mode === "object" ? {} : []; ancestors.push(value); ancestorsCopy.push(copy); if (mode === "object") { forEach(value, function (item, key) { copy[key] = copyValue(item, ancestors, ancestorsCopy); }); } else { value.forEach(function (item, index) { copy[index] = copyValue(item, ancestors, ancestorsCopy); }); } ancestors.pop(); ancestorsCopy.pop(); return copy; }; module.exports = function (source) { return copyValue(ensureValue(source), [], []); };
Version data entries
46 entries across 46 versions & 3 rubygems