artdaq_node_server  v1_00_07
 All Classes Namespaces Files Variables Pages
_initCloneByTag.js
1 var cloneArrayBuffer = require('./_cloneArrayBuffer'),
2  cloneDataView = require('./_cloneDataView'),
3  cloneMap = require('./_cloneMap'),
4  cloneRegExp = require('./_cloneRegExp'),
5  cloneSet = require('./_cloneSet'),
6  cloneSymbol = require('./_cloneSymbol'),
7  cloneTypedArray = require('./_cloneTypedArray');
8 
10 var boolTag = '[object Boolean]',
11  dateTag = '[object Date]',
12  mapTag = '[object Map]',
13  numberTag = '[object Number]',
14  regexpTag = '[object RegExp]',
15  setTag = '[object Set]',
16  stringTag = '[object String]',
17  symbolTag = '[object Symbol]';
18 
19 var arrayBufferTag = '[object ArrayBuffer]',
20  dataViewTag = '[object DataView]',
21  float32Tag = '[object Float32Array]',
22  float64Tag = '[object Float64Array]',
23  int8Tag = '[object Int8Array]',
24  int16Tag = '[object Int16Array]',
25  int32Tag = '[object Int32Array]',
26  uint8Tag = '[object Uint8Array]',
27  uint8ClampedTag = '[object Uint8ClampedArray]',
28  uint16Tag = '[object Uint16Array]',
29  uint32Tag = '[object Uint32Array]';
30 
44 function initCloneByTag(object, tag, cloneFunc, isDeep) {
45  var Ctor = object.constructor;
46  switch (tag) {
47  case arrayBufferTag:
48  return cloneArrayBuffer(object);
49 
50  case boolTag:
51  case dateTag:
52  return new Ctor(+object);
53 
54  case dataViewTag:
55  return cloneDataView(object, isDeep);
56 
57  case float32Tag: case float64Tag:
58  case int8Tag: case int16Tag: case int32Tag:
59  case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
60  return cloneTypedArray(object, isDeep);
61 
62  case mapTag:
63  return cloneMap(object, isDeep, cloneFunc);
64 
65  case numberTag:
66  case stringTag:
67  return new Ctor(object);
68 
69  case regexpTag:
70  return cloneRegExp(object);
71 
72  case setTag:
73  return cloneSet(object, isDeep, cloneFunc);
74 
75  case symbolTag:
76  return cloneSymbol(object);
77  }
78 }
79 
80 module.exports = initCloneByTag;