|
- /*!
- * shallow-clone <https://github.com/jonschlinkert/shallow-clone>
- *
- * Copyright (c) 2015, Jon Schlinkert.
- * Licensed under the MIT License.
- */
-
- 'use strict';
-
- var utils = require('./utils');
-
- /**
- * Shallow copy an object, array or primitive.
- *
- * @param {any} `val`
- * @return {any}
- */
-
- function clone(val) {
- var type = utils.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 (utils.isObject(obj)) {
- return utils.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;
|