OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var createClassWrapper = requireNative('utils').createClassWrapper; | 5 var createClassWrapper = requireNative('utils').createClassWrapper; |
6 var nativeDeepCopy = requireNative('utils').deepCopy; | 6 var nativeDeepCopy = requireNative('utils').deepCopy; |
7 var schemaRegistry = requireNative('schema_registry'); | 7 var schemaRegistry = requireNative('schema_registry'); |
8 var CHECK = requireNative('logging').CHECK; | 8 var CHECK = requireNative('logging').CHECK; |
9 var DCHECK = requireNative('logging').DCHECK; | 9 var DCHECK = requireNative('logging').DCHECK; |
10 var WARNING = requireNative('logging').WARNING; | 10 var WARNING = requireNative('logging').WARNING; |
11 | 11 |
12 /** | 12 /** |
13 * An object forEach. Calls |f| with each (key, value) pair of |obj|, using | 13 * An object forEach. Calls |f| with each (key, value) pair of |obj|, using |
14 * |self| as the target. | 14 * |self| as the target. |
15 * @param {Object} obj The object to iterate over. | 15 * @param {Object} obj The object to iterate over. |
16 * @param {function} f The function to call in each iteration. | 16 * @param {function} f The function to call in each iteration. |
17 * @param {Object} self The object to use as |this| in each function call. | 17 * @param {Object} self The object to use as |this| in each function call. |
18 */ | 18 */ |
19 function forEach(obj, f, self) { | 19 function forEach(obj, f, self) { |
20 for (var key in obj) { | 20 for (var key in obj) { |
21 if ($Object.hasOwnProperty(obj, key)) | 21 if ($Object.hasOwnProperty(obj, key)) |
22 $Function.call(f, self, key, obj[key]); | 22 $Function.call(f, self, key, obj[key]); |
23 } | 23 } |
24 } | 24 } |
25 | 25 |
26 /** | 26 /** |
27 * Assuming |array_of_dictionaries| is structured like this: | 27 * Assuming |array_of_dictionaries| is structured like this: |
28 * [{id: 1, ... }, {id: 2, ...}, ...], you can use | 28 * [{id: 1, ... }, {id: 2, ...}, ...], you can use |
29 * lookup(array_of_dictionaries, 'id', 2) to get the dictionary with id == 2. | 29 * lookup(array_of_dictionaries, 'id', 2) to get the dictionary with id == 2. |
30 * @param {Array.<Object.<string, ?>>} array_of_dictionaries | 30 * @param {Array<Object<string, ?>>} array_of_dictionaries |
31 * @param {string} field | 31 * @param {string} field |
32 * @param {?} value | 32 * @param {?} value |
33 */ | 33 */ |
34 function lookup(array_of_dictionaries, field, value) { | 34 function lookup(array_of_dictionaries, field, value) { |
35 var filter = function (dict) {return dict[field] == value;}; | 35 var filter = function (dict) {return dict[field] == value;}; |
36 var matches = array_of_dictionaries.filter(filter); | 36 var matches = array_of_dictionaries.filter(filter); |
37 if (matches.length == 0) { | 37 if (matches.length == 0) { |
38 return undefined; | 38 return undefined; |
39 } else if (matches.length == 1) { | 39 } else if (matches.length == 1) { |
40 return matches[0] | 40 return matches[0] |
(...skipping 27 matching lines...) Expand all Loading... |
68 * Takes a private class implementation |cls| and exposes a subset of its | 68 * Takes a private class implementation |cls| and exposes a subset of its |
69 * methods |functions| and properties |properties| and |readonly| in a public | 69 * methods |functions| and properties |properties| and |readonly| in a public |
70 * wrapper class that it returns. Within bindings code, you can access the | 70 * wrapper class that it returns. Within bindings code, you can access the |
71 * implementation from an instance of the wrapper class using | 71 * implementation from an instance of the wrapper class using |
72 * privates(instance).impl, and from the implementation class you can access | 72 * privates(instance).impl, and from the implementation class you can access |
73 * the wrapper using this.wrapper (or implInstance.wrapper if you have another | 73 * the wrapper using this.wrapper (or implInstance.wrapper if you have another |
74 * instance of the implementation class). | 74 * instance of the implementation class). |
75 * @param {string} name The name of the exposed wrapper class. | 75 * @param {string} name The name of the exposed wrapper class. |
76 * @param {Object} cls The class implementation. | 76 * @param {Object} cls The class implementation. |
77 * @param {{superclass: ?Function, | 77 * @param {{superclass: ?Function, |
78 * functions: ?Array.<string>, | 78 * functions: ?Array<string>, |
79 * properties: ?Array.<string>, | 79 * properties: ?Array<string>, |
80 * readonly: ?Array.<string>}} exposed The names of properties on the | 80 * readonly: ?Array<string>}} exposed The names of properties on the |
81 * implementation class to be exposed. |superclass| represents the | 81 * implementation class to be exposed. |superclass| represents the |
82 * constructor of the class to be used as the superclass of the exposed | 82 * constructor of the class to be used as the superclass of the exposed |
83 * class; |functions| represents the names of functions which should be | 83 * class; |functions| represents the names of functions which should be |
84 * delegated to the implementation; |properties| are gettable/settable | 84 * delegated to the implementation; |properties| are gettable/settable |
85 * properties and |readonly| are read-only properties. | 85 * properties and |readonly| are read-only properties. |
86 */ | 86 */ |
87 function expose(name, cls, exposed) { | 87 function expose(name, cls, exposed) { |
88 var publicClass = createClassWrapper(name, cls, exposed.superclass); | 88 var publicClass = createClassWrapper(name, cls, exposed.superclass); |
89 | 89 |
90 if ('functions' in exposed) { | 90 if ('functions' in exposed) { |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 $Function.apply(func, null, args); | 165 $Function.apply(func, null, args); |
166 }); | 166 }); |
167 } | 167 } |
168 | 168 |
169 exports.forEach = forEach; | 169 exports.forEach = forEach; |
170 exports.loadTypeSchema = loadTypeSchema; | 170 exports.loadTypeSchema = loadTypeSchema; |
171 exports.lookup = lookup; | 171 exports.lookup = lookup; |
172 exports.expose = expose; | 172 exports.expose = expose; |
173 exports.deepCopy = deepCopy; | 173 exports.deepCopy = deepCopy; |
174 exports.promise = promise; | 174 exports.promise = promise; |
OLD | NEW |