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

Side by Side Diff: utils/apidoc/html_diff.dart

Issue 13797002: Change MirrorSystem.libraries to Map<Uri, String> (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « utils/apidoc/apidoc.dart ('k') | no next file » | 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 /** 5 /**
6 * A script to assist in documenting the difference between the dart:html API 6 * A script to assist in documenting the difference between the dart:html API
7 * and the old DOM API. 7 * and the old DOM API.
8 */ 8 */
9 library html_diff; 9 library html_diff;
10 10
11 import 'dart:async'; 11 import 'dart:async';
12 import 'dart:io'; 12 import 'dart:io';
13 import 'dart:uri';
13 14
14 import 'lib/metadata.dart'; 15 import 'lib/metadata.dart';
15 16
16 // TODO(rnystrom): Use "package:" URL (#4968). 17 // TODO(rnystrom): Use "package:" URL (#4968).
17 import '../../sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.d art'; 18 import '../../sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.d art';
18 import '../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors.dart'; 19 import '../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors.dart';
19 import '../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors_util.dar t'; 20 import '../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors_util.dar t';
21 import '../../sdk/lib/_internal/compiler/implementation/source_file_provider.dar t';
20 import '../../sdk/lib/_internal/dartdoc/lib/dartdoc.dart'; 22 import '../../sdk/lib/_internal/dartdoc/lib/dartdoc.dart';
21 import '../../sdk/lib/html/html_common/metadata.dart'; 23 import '../../sdk/lib/html/html_common/metadata.dart';
22 24
23 // TODO(amouravski): There is currently magic that looks at dart:* libraries 25 // TODO(amouravski): There is currently magic that looks at dart:* libraries
24 // rather than the declared library names. This changed due to recent syntax 26 // rather than the declared library names. This changed due to recent syntax
25 // changes. We should only need to look at the library 'html'. 27 // changes. We should only need to look at the library 'html'.
26 const List<String> HTML_LIBRARY_NAMES = const [ 28 const List<Uri> HTML_LIBRARY_URIS = const [
27 'dart:html', 29 const Uri.fromComponents(scheme: 'dart', path: 'html'),
28 'dart:indexed_db', 30 const Uri.fromComponents(scheme: 'dart', path: 'indexed_db'),
29 'dart:svg', 31 const Uri.fromComponents(scheme: 'dart', path: 'svg'),
30 'dart:web_audio']; 32 const Uri.fromComponents(scheme: 'dart', path: 'web_audio')];
31 const List<String> HTML_DECLARED_NAMES = const [
32 'dart.dom.html',
33 'dart.dom.indexed_db',
34 'dart.dom.svg',
35 'dart.dom.web_audio'];
36 33
37 /** 34 /**
38 * A class for computing a many-to-many mapping between the types and 35 * A class for computing a many-to-many mapping between the types and
39 * members in `dart:html` and the MDN DOM types. This mapping is 36 * members in `dart:html` and the MDN DOM types. This mapping is
40 * based on two indicators: 37 * based on two indicators:
41 * 38 *
42 * 1. Auto-detected wrappers. Most `dart:html` types correspond 39 * 1. Auto-detected wrappers. Most `dart:html` types correspond
43 * straightforwardly to a single `@DomName` type, and 40 * straightforwardly to a single `@DomName` type, and
44 * have the same name. In addition, most `dart:html` methods 41 * have the same name. In addition, most `dart:html` methods
45 * just call a single `@DomName` method. This class 42 * just call a single `@DomName` method. This class
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 print('Warning: $s'); 82 print('Warning: $s');
86 } 83 }
87 } 84 }
88 85
89 /** 86 /**
90 * Computes the `@DomName` to `dart:html` mapping, and 87 * Computes the `@DomName` to `dart:html` mapping, and
91 * places it in [htmlToDom] and [htmlTypesToDom]. Before this is run, dart2js 88 * places it in [htmlToDom] and [htmlTypesToDom]. Before this is run, dart2js
92 * should be initialized (via [parseOptions] and [initializeWorld]) and 89 * should be initialized (via [parseOptions] and [initializeWorld]) and
93 * [HtmlDiff.initialize] should be called. 90 * [HtmlDiff.initialize] should be called.
94 */ 91 */
95 Future run(Path libDir) { 92 Future run(Uri libraryRoot) {
96 var result = new Completer(); 93 var result = new Completer();
97 var paths = <Path>[]; 94 var provider = new SourceFileProvider();
98 for (var libraryName in HTML_LIBRARY_NAMES) { 95 var handler = new FormattingDiagnosticHandler(provider);
99 paths.add(new Path(libraryName)); 96 Future<MirrorSystem> analysis = analyzeUri(
100 } 97 HTML_LIBRARY_URIS, libraryRoot, null,
101 analyze(paths, libDir).then((MirrorSystem mirrors) { 98 provider.readStringFromUri,
102 for (var libraryName in HTML_DECLARED_NAMES) { 99 handler.diagnosticHandler);
103 var library = mirrors.libraries[libraryName]; 100 analysis.then((MirrorSystem mirrors) {
101 for (var libraryUri in HTML_LIBRARY_URIS) {
102 var library = mirrors.libraries[libraryUri];
104 if (library == null) { 103 if (library == null) {
105 warn('Could not find $libraryName'); 104 warn('Could not find $libraryUri');
106 result.complete(false); 105 result.complete(false);
107 } 106 }
108 for (ClassMirror type in library.classes.values) { 107 for (ClassMirror type in library.classes.values) {
109 final domTypes = htmlToDomTypes(type); 108 final domTypes = htmlToDomTypes(type);
110 if (domTypes.isEmpty) continue; 109 if (domTypes.isEmpty) continue;
111 110
112 htmlTypesToDom.putIfAbsent(type.qualifiedName, 111 htmlTypesToDom.putIfAbsent(type.qualifiedName,
113 () => new Set()).addAll(domTypes); 112 () => new Set()).addAll(domTypes);
114 113
115 type.members.forEach( 114 type.members.forEach(
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 return members; 225 return members;
227 } 226 }
228 227
229 if (name.split('.').length != 2) { 228 if (name.split('.').length != 2) {
230 warn('invalid member name ${name}'); 229 warn('invalid member name ${name}');
231 return new Set(); 230 return new Set();
232 } 231 }
233 return new Set.from([name]); 232 return new Set.from([name]);
234 } 233 }
235 } 234 }
OLDNEW
« no previous file with comments | « utils/apidoc/apidoc.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698