d3429fdcd8b69f530556546e1370e18606929500
[platform/framework/web/crosswalk-tizen.git] /
1 define(['./kindOf', './isPlainObject', '../object/mixIn'], function (kindOf, isPlainObject, mixIn) {
2
3     /**
4      * Clone native types.
5      */
6     function clone(val){
7         switch (kindOf(val)) {
8             case 'Object':
9                 return cloneObject(val);
10             case 'Array':
11                 return cloneArray(val);
12             case 'RegExp':
13                 return cloneRegExp(val);
14             case 'Date':
15                 return cloneDate(val);
16             default:
17                 return val;
18         }
19     }
20
21     function cloneObject(source) {
22         if (isPlainObject(source)) {
23             return mixIn({}, source);
24         } else {
25             return source;
26         }
27     }
28
29     function cloneRegExp(r) {
30         var flags = '';
31         flags += r.multiline ? 'm' : '';
32         flags += r.global ? 'g' : '';
33         flags += r.ignoreCase ? 'i' : '';
34         return new RegExp(r.source, flags);
35     }
36
37     function cloneDate(date) {
38         return new Date(+date);
39     }
40
41     function cloneArray(arr) {
42         return arr.slice();
43     }
44
45     return clone;
46
47 });