MCPcopy
hub / github.com/angular-ui/ui-router / copyElement

Function copyElement

test/angular/1.4/angular.js:946–991  ·  view source on GitHub ↗
(source)

Source from the content-addressed store, hash-verified

944 }
945
946 function copyElement(source) {
947 // Simple values
948 if (!isObject(source)) {
949 return source;
950 }
951
952 // Already copied values
953 var index = stackSource.indexOf(source);
954 if (index !== -1) {
955 return stackDest[index];
956 }
957
958 if (isWindow(source) || isScope(source)) {
959 throw ngMinErr('cpws',
960 "Can't copy! Making copies of Window or Scope instances is not supported.");
961 }
962
963 var needsRecurse = false;
964 var destination;
965
966 if (isArray(source)) {
967 destination = [];
968 needsRecurse = true;
969 } else if (isTypedArray(source)) {
970 destination = new source.constructor(source);
971 } else if (isDate(source)) {
972 destination = new Date(source.getTime());
973 } else if (isRegExp(source)) {
974 destination = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]);
975 destination.lastIndex = source.lastIndex;
976 } else if (isBlob(source)) {
977 destination = new source.constructor([source], {type: source.type});
978 } else if (isFunction(source.cloneNode)) {
979 destination = source.cloneNode(true);
980 } else {
981 destination = Object.create(getPrototypeOf(source));
982 needsRecurse = true;
983 }
984
985 stackSource.push(source);
986 stackDest.push(destination);
987
988 return needsRecurse
989 ? copyRecurse(source, destination)
990 : destination;
991 }
992}
993
994/**

Callers 2

copyFunction · 0.70
copyRecurseFunction · 0.70

Calls 11

isArrayFunction · 0.85
matchMethod · 0.80
isObjectFunction · 0.70
isWindowFunction · 0.70
isScopeFunction · 0.70
isTypedArrayFunction · 0.70
isDateFunction · 0.70
isRegExpFunction · 0.70
isBlobFunction · 0.70
isFunctionFunction · 0.70
copyRecurseFunction · 0.70

Tested by

no test coverage detected