@@ -6,36 +6,32 @@ window.Imuta = {
6
6
when " [object Boolean]" then some
7
7
when " [object Number]" then some
8
8
when " [object String]" then some
9
- when " [object Function]" then some . bind ({})
9
+ when " [object Function]" then new () -> some
10
10
when " [object Null]" then null
11
11
when " [object Array]" then some .map (el) -> Imuta .clone (el)
12
12
when " [object Object]" then Object .keys (some).reduce ((acc , k ) -> acc[Imuta .clone (k)] = Imuta .clone (some[k]); acc), {}
13
13
equal : (a , b ) ->
14
- [type_a , type_b ] = [Object .prototype .toString .call (a), Object .prototype .toString .call (b)]
15
- if type_a == type_b
16
- switch type_a
17
- when " [object Undefined]" then a == b
18
- when " [object Boolean]" then a == b
19
- when " [object Number]" then a == b
20
- when " [object String]" then a == b
21
- when " [object Function]" then a .toString () == b .toString ()
22
- when " [object Null]" then a == b
23
- when " [object Array]"
24
- len_a = a .length
25
- len_b = b .length
26
- if len_a == len_b
27
- [0 .. len_a].every (n) -> Imuta .equal (a[n], b[n])
28
- else
29
- false
30
- when " [object Object]"
31
- keys_a = Object .keys (a).sort ()
32
- keys_b = Object .keys (b).sort ()
33
- if Imuta .equal (keys_a, keys_b)
34
- keys_a .every (k) -> Imuta .equal (a[k], b[k])
35
- else
36
- false
14
+ if a == b
15
+ true
37
16
else
38
- false
17
+ [type_a , type_b ] = [Object .prototype .toString .call (a), Object .prototype .toString .call (b)]
18
+ if type_a == type_b
19
+ switch type_a
20
+ when " [object Undefined]" then true
21
+ when " [object Boolean]" then a == b
22
+ when " [object Number]" then a == b
23
+ when " [object String]" then a == b
24
+ when " [object Function]" then false
25
+ when " [object Null]" then true
26
+ when " [object Array]"
27
+ len_a = a .reduce (((acc , _ ) -> acc+ 1 ), 0 )
28
+ len_b = b .reduce (((acc , _ ) -> acc+ 1 ), 0 )
29
+ if (len_a == len_b) then [0 .. len_a].every (n) -> Imuta .equal (a[n], b[n]) else false
30
+ when " [object Object]"
31
+ [keys_a , keys_b ] = [a,b].map ((obj ) -> lst = []; lst .push (k) for k, _ of obj; lst .sort () )
32
+ if Imuta .equal (keys_a, keys_b) then keys_a .every (k) -> Imuta .equal (a[k], b[k]) else false
33
+ else
34
+ false
39
35
is_undefined : (some ) -> Object .prototype .toString .call (some) == " [object Undefined]"
40
36
is_boolean : (some ) -> Object .prototype .toString .call (some) == " [object Boolean]"
41
37
is_number : (some ) -> Object .prototype .toString .call (some) == " [object Number]"
0 commit comments