Blame view

node_modules/shallow-clone/index.js 1.02 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  /*!
   * 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;