Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: lib/src/canonicalized_map.dart

Issue 1133583002: Fix signatures of isValidKey arguments to CanonicalizedMap constructors. (Closed) Base URL: https://github.com/dart-lang/collection.git@master
Patch Set: Update version number. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « CHANGELOG.md ('k') | pubspec.yaml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 dart.pkg.collection.canonicalized_map; 5 library dart.pkg.collection.canonicalized_map;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'utils.dart'; 9 import 'utils.dart';
10 10
(...skipping 17 matching lines...) Expand all
28 /** 28 /**
29 * Creates an empty canonicalized map. 29 * Creates an empty canonicalized map.
30 * 30 *
31 * The [canonicalize] function should return the canonical value for the given 31 * The [canonicalize] function should return the canonical value for the given
32 * key. Keys with the same canonical value are considered equivalent. 32 * key. Keys with the same canonical value are considered equivalent.
33 * 33 *
34 * The [isValidKey] function is called before calling [canonicalize] for 34 * The [isValidKey] function is called before calling [canonicalize] for
35 * methods that take arbitrary objects. It can be used to filter out keys that 35 * methods that take arbitrary objects. It can be used to filter out keys that
36 * can't be canonicalized. 36 * can't be canonicalized.
37 */ 37 */
38 CanonicalizedMap(C canonicalize(K key), {bool isValidKey(K key)}) 38 CanonicalizedMap(C canonicalize(K key), {bool isValidKey(Object key)})
39 : _canonicalize = canonicalize, 39 : _canonicalize = canonicalize,
40 _isValidKeyFn = isValidKey; 40 _isValidKeyFn = isValidKey;
41 41
42 /** 42 /**
43 * Creates a canonicalized map that is initialized with the key/value pairs of 43 * Creates a canonicalized map that is initialized with the key/value pairs of
44 * [other]. 44 * [other].
45 * 45 *
46 * The [canonicalize] function should return the canonical value for the given 46 * The [canonicalize] function should return the canonical value for the given
47 * key. Keys with the same canonical value are considered equivalent. 47 * key. Keys with the same canonical value are considered equivalent.
48 * 48 *
49 * The [isValidKey] function is called before calling [canonicalize] for 49 * The [isValidKey] function is called before calling [canonicalize] for
50 * methods that take arbitrary objects. It can be used to filter out keys that 50 * methods that take arbitrary objects. It can be used to filter out keys that
51 * can't be canonicalized. 51 * can't be canonicalized.
52 */ 52 */
53 CanonicalizedMap.from(Map<K, V> other, C canonicalize(K key), 53 CanonicalizedMap.from(Map<K, V> other, C canonicalize(K key),
54 {bool isValidKey(K key)}) 54 {bool isValidKey(Object key)})
55 : _canonicalize = canonicalize, 55 : _canonicalize = canonicalize,
56 _isValidKeyFn = isValidKey { 56 _isValidKeyFn = isValidKey {
57 addAll(other); 57 addAll(other);
58 } 58 }
59 59
60 V operator [](Object key) { 60 V operator [](Object key) {
61 if (!_isValidKey(key)) return null; 61 if (!_isValidKey(key)) return null;
62 var pair = _base[_canonicalize(key)]; 62 var pair = _base[_canonicalize(key)];
63 return pair == null ? null : pair.last; 63 return pair == null ? null : pair.last;
64 } 64 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 return pair == null ? null : pair.last; 106 return pair == null ? null : pair.last;
107 } 107 }
108 108
109 Iterable<V> get values => _base.values.map((pair) => pair.last); 109 Iterable<V> get values => _base.values.map((pair) => pair.last);
110 110
111 String toString() => Maps.mapToString(this); 111 String toString() => Maps.mapToString(this);
112 112
113 bool _isValidKey(Object key) => (key == null || key is K) && 113 bool _isValidKey(Object key) => (key == null || key is K) &&
114 (_isValidKeyFn == null || _isValidKeyFn(key)); 114 (_isValidKeyFn == null || _isValidKeyFn(key));
115 } 115 }
OLDNEW
« no previous file with comments | « CHANGELOG.md ('k') | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698