| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*!
- * shallow-clone <https://github.com/jonschlinkert/shallow-clone>
- *
- * Copyright (c) 2015-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
- 'use strict';
- var isObject = require('is-extendable');
- var mixin = require('mixin-object');
- var typeOf = require('kind-of');
- /**
- * Shallow copy an object, array or primitive.
- *
- * @param {any} `val`
- * @return {any}
- */
- function clone(val) {
- var type = typeOf(val);
- if (clone.hasOwnProperty(type)) {
- return clone[type](val);
- }
- return val;
- }
- clone.array = function cloneArray(arr) {
- return arr.slice();
- };
- clone.date = function cloneDate(date) {
- return new Date(+date);
- };
- clone.object = function cloneObject(obj) {
- if (isObject(obj)) {
- return mixin({}, obj);
- } else {
- return obj;
- }
- };
- clone.regexp = function cloneRegExp(re) {
- var flags = '';
- flags += re.multiline ? 'm' : '';
- flags += re.global ? 'g' : '';
- flags += re.ignorecase ? 'i' : '';
- return new RegExp(re.source, flags);
- };
- /**
- * Expose `clone`
- */
- module.exports = clone;
|