.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / lodash / _initCloneByTag.js
1 var cloneArrayBuffer = require('./_cloneArrayBuffer'),
2     cloneDataView = require('./_cloneDataView'),
3     cloneRegExp = require('./_cloneRegExp'),
4     cloneSymbol = require('./_cloneSymbol'),
5     cloneTypedArray = require('./_cloneTypedArray');
6
7 /** `Object#toString` result references. */
8 var boolTag = '[object Boolean]',
9     dateTag = '[object Date]',
10     mapTag = '[object Map]',
11     numberTag = '[object Number]',
12     regexpTag = '[object RegExp]',
13     setTag = '[object Set]',
14     stringTag = '[object String]',
15     symbolTag = '[object Symbol]';
16
17 var arrayBufferTag = '[object ArrayBuffer]',
18     dataViewTag = '[object DataView]',
19     float32Tag = '[object Float32Array]',
20     float64Tag = '[object Float64Array]',
21     int8Tag = '[object Int8Array]',
22     int16Tag = '[object Int16Array]',
23     int32Tag = '[object Int32Array]',
24     uint8Tag = '[object Uint8Array]',
25     uint8ClampedTag = '[object Uint8ClampedArray]',
26     uint16Tag = '[object Uint16Array]',
27     uint32Tag = '[object Uint32Array]';
28
29 /**
30  * Initializes an object clone based on its `toStringTag`.
31  *
32  * **Note:** This function only supports cloning values with tags of
33  * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
34  *
35  * @private
36  * @param {Object} object The object to clone.
37  * @param {string} tag The `toStringTag` of the object to clone.
38  * @param {boolean} [isDeep] Specify a deep clone.
39  * @returns {Object} Returns the initialized clone.
40  */
41 function initCloneByTag(object, tag, isDeep) {
42   var Ctor = object.constructor;
43   switch (tag) {
44     case arrayBufferTag:
45       return cloneArrayBuffer(object);
46
47     case boolTag:
48     case dateTag:
49       return new Ctor(+object);
50
51     case dataViewTag:
52       return cloneDataView(object, isDeep);
53
54     case float32Tag: case float64Tag:
55     case int8Tag: case int16Tag: case int32Tag:
56     case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
57       return cloneTypedArray(object, isDeep);
58
59     case mapTag:
60       return new Ctor;
61
62     case numberTag:
63     case stringTag:
64       return new Ctor(object);
65
66     case regexpTag:
67       return cloneRegExp(object);
68
69     case setTag:
70       return new Ctor;
71
72     case symbolTag:
73       return cloneSymbol(object);
74   }
75 }
76
77 module.exports = initCloneByTag;