OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
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. | |
4 | |
5 library dart._js_names; | |
6 | |
7 import 'dart:_foreign_helper' show JS; | |
8 | |
9 /// No-op method that is called to inform the compiler that unmangled | |
10 /// named must be preserved. | |
11 preserveNames() {} | |
12 | |
13 final Map<String, String> mangledNames = computeMangledNames(); | |
14 | |
15 final Map<String, String> reflectiveNames = computeReflectiveNames(); | |
16 | |
17 Map<String, String> computeMangledNames() { | |
18 preserveNames(); | |
19 var mangledNames = JS('', 'init.mangledNames'); | |
20 var keys = extractKeys(mangledNames); | |
21 var result = <String, String>{}; | |
22 for (String key in keys) { | |
23 result[key] = JS('String', '#[#]', mangledNames, key); | |
24 } | |
25 return result; | |
26 } | |
27 | |
28 Map<String, String> computeReflectiveNames() { | |
29 preserveNames(); | |
30 var result = <String, String>{}; | |
31 mangledNames.forEach((String mangledName, String reflectiveName) { | |
32 result[reflectiveName] = mangledName; | |
kasperl
2013/06/19 09:19:50
Weird indentation.
ahe
2013/06/19 12:20:59
Done.
| |
33 }); | |
34 return result; | |
35 } | |
36 | |
37 List extractKeys(victim) { | |
38 return JS('List', ''' | |
39 (function(victim, hasOwnProperty) { | |
40 var result = []; | |
41 for (var key in victim) { | |
42 if (hasOwnProperty.call(victim, key)) result.push(key); | |
43 } | |
44 return result; | |
45 })(#, Object.prototype.hasOwnProperty)''', victim); | |
46 } | |
OLD | NEW |