OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library yaml.equality; | |
6 | |
7 import 'dart:collection'; | 5 import 'dart:collection'; |
8 | 6 |
9 import 'package:collection/collection.dart'; | 7 import 'package:collection/collection.dart'; |
10 | 8 |
11 import 'yaml_node.dart'; | 9 import 'yaml_node.dart'; |
12 | 10 |
13 /// Returns a [Map] that compares its keys based on [deepEquals]. | 11 /// Returns a [Map] that compares its keys based on [deepEquals]. |
14 Map deepEqualsMap() => new HashMap(equals: deepEquals, hashCode: deepHashCode); | 12 Map/*<K, V>*/ deepEqualsMap/*<K, V>*/() => |
| 13 new HashMap(equals: deepEquals, hashCode: deepHashCode); |
15 | 14 |
16 /// Returns whether two objects are structurally equivalent. | 15 /// Returns whether two objects are structurally equivalent. |
17 /// | 16 /// |
18 /// This considers `NaN` values to be equivalent, handles self-referential | 17 /// This considers `NaN` values to be equivalent, handles self-referential |
19 /// structures, and considers [YamlScalar]s to be equal to their values. | 18 /// structures, and considers [YamlScalar]s to be equal to their values. |
20 bool deepEquals(obj1, obj2) => new _DeepEquals().equals(obj1, obj2); | 19 bool deepEquals(obj1, obj2) => new _DeepEquals().equals(obj1, obj2); |
21 | 20 |
22 /// A class that provides access to the list of parent objects used for loop | 21 /// A class that provides access to the list of parent objects used for loop |
23 /// detection. | 22 /// detection. |
24 class _DeepEquals { | 23 class _DeepEquals { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 } else { | 116 } else { |
118 return value.hashCode; | 117 return value.hashCode; |
119 } | 118 } |
120 } finally { | 119 } finally { |
121 parents.removeLast(); | 120 parents.removeLast(); |
122 } | 121 } |
123 } | 122 } |
124 | 123 |
125 return _deepHashCode(obj); | 124 return _deepHashCode(obj); |
126 } | 125 } |
OLD | NEW |