| Index: utils/apidoc/html_diff.dart
|
| diff --git a/utils/apidoc/html_diff.dart b/utils/apidoc/html_diff.dart
|
| deleted file mode 100644
|
| index 06adfcaf1dcdee16e54d1ba11d1b20d50bc7b986..0000000000000000000000000000000000000000
|
| --- a/utils/apidoc/html_diff.dart
|
| +++ /dev/null
|
| @@ -1,231 +0,0 @@
|
| -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -/**
|
| - * A script to assist in documenting the difference between the dart:html API
|
| - * and the old DOM API.
|
| - */
|
| -library html_diff;
|
| -
|
| -import 'dart:async';
|
| -
|
| -import 'lib/metadata.dart';
|
| -
|
| -// TODO(rnystrom): Use "package:" URL (#4968).
|
| -import '../../pkg/compiler/lib/src/mirrors/analyze.dart';
|
| -import '../../pkg/compiler/lib/src/mirrors/source_mirrors.dart';
|
| -import '../../pkg/compiler/lib/src/mirrors/mirrors_util.dart';
|
| -import '../../pkg/compiler/lib/src/source_file_provider.dart';
|
| -
|
| -// TODO(amouravski): There is currently magic that looks at dart:* libraries
|
| -// rather than the declared library names. This changed due to recent syntax
|
| -// changes. We should only need to look at the library 'html'.
|
| -final List<Uri> HTML_LIBRARY_URIS = [
|
| - new Uri(scheme: 'dart', path: 'html'),
|
| - new Uri(scheme: 'dart', path: 'indexed_db'),
|
| - new Uri(scheme: 'dart', path: 'svg'),
|
| - new Uri(scheme: 'dart', path: 'web_audio')];
|
| -
|
| -/**
|
| - * A class for computing a many-to-many mapping between the types and
|
| - * members in `dart:html` and the MDN DOM types. This mapping is
|
| - * based on two indicators:
|
| - *
|
| - * 1. Auto-detected wrappers. Most `dart:html` types correspond
|
| - * straightforwardly to a single `@DomName` type, and
|
| - * have the same name. In addition, most `dart:html` methods
|
| - * just call a single `@DomName` method. This class
|
| - * detects these simple correspondences automatically.
|
| - *
|
| - * 2. Manual annotations. When it's not clear which
|
| - * `@DomName` items a given `dart:html` item
|
| - * corresponds to, the `dart:html` item can be annotated in the
|
| - * documentation comments using the `@DomName` annotation.
|
| - *
|
| - * The `@DomName` annotations for types and members are of the form
|
| - * `@DomName NAME(, NAME)*`, where the `NAME`s refer to the
|
| - * `@DomName` types/members that correspond to the
|
| - * annotated `dart:html` type/member. `NAME`s on member annotations
|
| - * can refer to either fully-qualified member names (e.g.
|
| - * `Document.createElement`) or unqualified member names
|
| - * (e.g. `createElement`). Unqualified member names are assumed to
|
| - * refer to members of one of the corresponding `@DomName`
|
| - * types.
|
| - */
|
| -class HtmlDiff {
|
| - /**
|
| - * A map from `dart:html` members to the corresponding fully qualified
|
| - * `@DomName` member(s).
|
| - */
|
| - final Map<String, Set<String>> htmlToDom;
|
| -
|
| - /** A map from `dart:html` types to corresponding `@DomName` types. */
|
| - final Map<String, Set<String>> htmlTypesToDom;
|
| -
|
| - /** If true, then print warning messages. */
|
| - final bool _printWarnings;
|
| -
|
| - static LibraryMirror dom;
|
| -
|
| - HtmlDiff({bool printWarnings: false}) :
|
| - _printWarnings = printWarnings,
|
| - htmlToDom = new Map<String, Set<String>>(),
|
| - htmlTypesToDom = new Map<String, Set<String>>();
|
| -
|
| - void warn(String s) {
|
| - if (_printWarnings) {
|
| - print('Warning: $s');
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Computes the `@DomName` to `dart:html` mapping, and
|
| - * places it in [htmlToDom] and [htmlTypesToDom]. Before this is run, dart2js
|
| - * should be initialized (via [parseOptions] and [initializeWorld]) and
|
| - * [HtmlDiff.initialize] should be called.
|
| - */
|
| - Future run(Uri libraryRoot) {
|
| - var result = new Completer();
|
| - var provider = new CompilerSourceFileProvider();
|
| - var handler = new FormattingDiagnosticHandler(provider);
|
| - Future<MirrorSystem> analysis = analyze(
|
| - HTML_LIBRARY_URIS, libraryRoot, null,
|
| - provider.readStringFromUri,
|
| - handler.diagnosticHandler);
|
| - analysis.then((MirrorSystem mirrors) {
|
| - for (var libraryUri in HTML_LIBRARY_URIS) {
|
| - var library = mirrors.libraries[libraryUri];
|
| - if (library == null) {
|
| - warn('Could not find $libraryUri');
|
| - result.complete(false);
|
| - }
|
| - for (ClassMirror type in classesOf(library.declarations)) {
|
| - final domTypes = htmlToDomTypes(type);
|
| - if (domTypes.isEmpty) continue;
|
| -
|
| - htmlTypesToDom.putIfAbsent(qualifiedNameOf(type),
|
| - () => new Set()).addAll(domTypes);
|
| -
|
| - membersOf(type.declarations).forEach(
|
| - (m) => _addMemberDiff(m, domTypes, nameOf(library)));
|
| - }
|
| - }
|
| - result.complete(true);
|
| - });
|
| - return result.future;
|
| - }
|
| -
|
| - /**
|
| - * Records the `@DomName` to `dart:html` mapping for
|
| - * [htmlMember] (from `dart:html`). [domTypes] are the
|
| - * `@DomName` type values that correspond to [htmlMember]'s
|
| - * defining type.
|
| - */
|
| - void _addMemberDiff(DeclarationMirror htmlMember, List<String> domTypes,
|
| - String libraryName) {
|
| - var domMembers = htmlToDomMembers(htmlMember, domTypes);
|
| - if (htmlMember == null && !domMembers.isEmpty) {
|
| - warn('$libraryName member '
|
| - '${htmlMember.owner.simpleName}.'
|
| - '${htmlMember.simpleName} has no corresponding '
|
| - '$libraryName member.');
|
| - }
|
| -
|
| - if (htmlMember == null) return;
|
| - if (!domMembers.isEmpty) {
|
| - htmlToDom[qualifiedNameOf(htmlMember)] = domMembers;
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Returns the `@DomName` type values that correspond to
|
| - * [htmlType] from `dart:html`. This can be the empty list if no
|
| - * correspondence is found.
|
| - */
|
| - List<String> htmlToDomTypes(ClassMirror htmlType) {
|
| - if (htmlType.simpleName == null) return <String>[];
|
| -
|
| - final domNameMetadata = findMetadata(htmlType.metadata, 'DomName');
|
| - if (domNameMetadata != null) {
|
| - var domNames = <String>[];
|
| - var names = domNameMetadata.getField(symbolOf('name'));
|
| - for (var s in names.reflectee.split(',')) {
|
| - domNames.add(s.trim());
|
| - }
|
| -
|
| - if (domNames.length == 1 && domNames[0] == 'none') return <String>[];
|
| - return domNames;
|
| - }
|
| - return <String>[];
|
| - }
|
| -
|
| - /**
|
| - * Returns the `@DomName` member values that correspond to
|
| - * [htmlMember] from `dart:html`. This can be the empty set if no
|
| - * correspondence is found. [domTypes] are the
|
| - * `@DomName` type values that correspond to [htmlMember]'s
|
| - * defining type.
|
| - */
|
| - Set<String> htmlToDomMembers(DeclarationMirror htmlMember,
|
| - List<String> domTypes) {
|
| - if (htmlMember.isPrivate) return new Set();
|
| -
|
| - final domNameMetadata = findMetadata(htmlMember.metadata, 'DomName');
|
| - if (domNameMetadata != null) {
|
| - var domNames = <String>[];
|
| - var names = domNameMetadata.getField(symbolOf('name'));
|
| - for (var s in names.reflectee.split(',')) {
|
| - domNames.add(s.trim());
|
| - }
|
| -
|
| - if (domNames.length == 1 && domNames[0] == 'none') return new Set();
|
| - final members = new Set();
|
| - domNames.forEach((name) {
|
| - var nameMembers = _membersFromName(name, domTypes);
|
| - if (nameMembers.isEmpty) {
|
| - if (name.contains('.')) {
|
| - warn('no member $name');
|
| - } else {
|
| - final options = <String>[];
|
| - for (var t in domTypes) {
|
| - options.add('$t.$name');
|
| - }
|
| - options.join(' or ');
|
| - warn('no member $options');
|
| - }
|
| - }
|
| - members.addAll(nameMembers);
|
| - });
|
| - return members;
|
| - }
|
| -
|
| - return new Set();
|
| - }
|
| -
|
| - /**
|
| - * Returns the `@DomName` strings that are indicated by
|
| - * [name]. [name] can be either an unqualified member name
|
| - * (e.g. `createElement`), in which case it's treated as the name of
|
| - * a member of one of [defaultTypes], or a fully-qualified member
|
| - * name (e.g. `Document.createElement`), in which case it's treated as a
|
| - * member of the @DomName element (`Document` in this case).
|
| - */
|
| - Set<String> _membersFromName(String name, List<String> defaultTypes) {
|
| - if (!name.contains('.', 0)) {
|
| - if (defaultTypes.isEmpty) {
|
| - warn('no default type for $name');
|
| - return new Set();
|
| - }
|
| - final members = new Set<String>();
|
| - defaultTypes.forEach((t) { members.add('$t.$name'); });
|
| - return members;
|
| - }
|
| -
|
| - if (name.split('.').length != 2) {
|
| - warn('invalid member name ${name}');
|
| - return new Set();
|
| - }
|
| - return new Set.from([name]);
|
| - }
|
| -}
|
|
|