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

Unified Diff: utils/apidoc/apidoc.dart

Issue 1361163002: remove docgen remnants from repo, update CHANGELOG (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: remove unused code Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « utils/apidoc/README.txt ('k') | utils/apidoc/docgen.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: utils/apidoc/apidoc.dart
diff --git a/utils/apidoc/apidoc.dart b/utils/apidoc/apidoc.dart
deleted file mode 100644
index db74d327ef09655c3a2934f24909aad8d9fafb3c..0000000000000000000000000000000000000000
--- a/utils/apidoc/apidoc.dart
+++ /dev/null
@@ -1,477 +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.
-
-/**
- * This generates the reference documentation for the core libraries that come
- * with dart. It is built on top of dartdoc, which is a general-purpose library
- * for generating docs from any Dart code. This library extends that to include
- * additional information and styling specific to our standard library.
- *
- * Usage:
- *
- * $ dart apidoc.dart [--out=<output directory>]
- */
-library apidoc;
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'html_diff.dart';
-
-import 'package:compiler/src/mirrors/source_mirrors.dart';
-import 'package:compiler/src/mirrors/mirrors_util.dart';
-import 'package:compiler/src/filenames.dart';
-import 'package:dartdoc/dartdoc.dart';
-import 'package:sdk_library_metadata/libraries.dart';
-import 'package:path/path.dart' as path;
-
-HtmlDiff _diff;
-
-void main(List<String> args) {
- int mode = MODE_STATIC;
- String outputDir = 'docs';
- bool generateAppCache = false;
-
- List<String> excludedLibraries = <String>[];
-
- // For libraries that have names matching the package name,
- // such as library unittest in package unittest, we just give
- // the package name with a --include-lib argument, such as:
- // --include-lib=unittest. These arguments are collected in
- // includedLibraries.
- List<String> includedLibraries = <String>[];
-
- // For libraries that lie within packages but have a different name,
- // such as the matcher library in package unittest, we can use
- // --extra-lib with a full relative path under pkg, such as
- // --extra-lib=unittest/lib/matcher.dart. These arguments are
- // collected in extraLibraries.
- List<String> extraLibraries = <String>[];
-
- String packageRoot;
- String version;
-
- // Parse the command-line arguments.
- for (int i = 0; i < args.length; i++) {
- final arg = args[i];
-
- switch (arg) {
- case '--mode=static':
- mode = MODE_STATIC;
- break;
-
- case '--mode=live-nav':
- mode = MODE_LIVE_NAV;
- break;
-
- case '--generate-app-cache=true':
- generateAppCache = true;
- break;
-
- default:
- if (arg.startsWith('--exclude-lib=')) {
- excludedLibraries.add(arg.substring('--exclude-lib='.length));
- } else if (arg.startsWith('--include-lib=')) {
- includedLibraries.add(arg.substring('--include-lib='.length));
- } else if (arg.startsWith('--extra-lib=')) {
- extraLibraries.add(arg.substring('--extra-lib='.length));
- } else if (arg.startsWith('--out=')) {
- outputDir = arg.substring('--out='.length);
- } else if (arg.startsWith('--package-root=')) {
- packageRoot = arg.substring('--package-root='.length);
- } else if (arg.startsWith('--version=')) {
- version = arg.substring('--version='.length);
- } else {
- print('Unknown option: $arg');
- return;
- }
- break;
- }
- }
-
- final libPath = path.join(scriptDir, '..', '..', 'sdk/');
-
- cleanOutputDirectory(outputDir);
-
- print('Copying static files...');
- // The basic dartdoc-provided static content.
- final copiedStatic = copyDirectory(
- path.join(scriptDir,
- '..', '..', 'sdk', 'lib', '_internal', 'dartdoc', 'static'),
- outputDir);
-
- // The apidoc-specific static content.
- final copiedApiDocStatic = copyDirectory(
- path.join(scriptDir, 'static'),
- outputDir);
-
- print('Parsing MDN data...');
- final mdnFile = new File(path.join(scriptDir, 'mdn', 'database.json'));
- final mdn = JSON.decode(mdnFile.readAsStringSync());
-
- print('Cross-referencing dart:html...');
- // TODO(amouravski): move HtmlDiff inside of the future chain below to re-use
- // the MirrorSystem already analyzed.
- _diff = new HtmlDiff(printWarnings:false);
- Future htmlDiff = _diff.run(currentDirectory.resolveUri(path.toUri(libPath)));
-
- // TODO(johnniwinther): Libraries for the compilation seem to be more like
- // URIs. Perhaps Path should have a toURI() method.
- // Add all of the core libraries.
- final apidocLibraries = <Uri>[];
- LIBRARIES.forEach((String name, LibraryInfo info) {
- if (info.documented) {
- apidocLibraries.add(Uri.parse('dart:$name'));
- }
- });
-
- // TODO(amouravski): This code is really wonky.
- var lister = new Directory(path.join(scriptDir, '..', '..', 'pkg')).list();
- lister.listen((entity) {
- if (entity is Directory) {
- var libName = path.basename(entity.path);
- var libPath = path.join(entity.path, 'lib', '${libName}.dart');
-
- // Ignore some libraries.
- if (excludedLibraries.contains(libName)) {
- return;
- }
-
- // Ignore hidden directories (like .svn) as well as pkg.xcodeproj.
- if (libName.startsWith('.') || libName.endsWith('.xcodeproj')) {
- return;
- }
-
- if (new File(libPath).existsSync()) {
- apidocLibraries.add(path.toUri(libPath));
- includedLibraries.add(libName);
- } else {
- print('Warning: could not find package at ${entity.path}');
- }
- }
- }, onDone: () {
- // Add any --extra libraries that had full pkg paths.
- // TODO(gram): if the handling of --include-lib libraries in the
- // listen() block above is cleaned up, then this will need to be
- // too, as it is a special case of the above.
- for (var lib in extraLibraries) {
- var libPath = '../../$lib';
- if (new File(libPath).existsSync()) {
- apidocLibraries.add(path.toUri(libPath));
- var libName = path.basename(libPath).replaceAll('.dart', '');
- includedLibraries.add(libName);
- }
- }
-
- final apidoc = new Apidoc(mdn, outputDir, mode, generateAppCache,
- excludedLibraries, version);
- apidoc.dartdocPath =
- path.join(scriptDir, '..', '..', 'sdk', 'lib', '_internal', 'dartdoc');
- // Select the libraries to include in the produced documentation:
- apidoc.includeApi = true;
- apidoc.includedLibraries = includedLibraries;
-
- // TODO(amouravski): make apidoc use roughly the same flow as bin/dartdoc.
- Future.wait([copiedStatic, copiedApiDocStatic, htmlDiff])
- .then((_) => apidoc.documentLibraries(apidocLibraries, libPath,
- packageRoot))
- .then((_) => compileScript(mode, outputDir, libPath, apidoc.tmpPath))
- .then((_) => print(apidoc.status))
- .catchError((e, trace) {
- print('Error: generation failed: ${e}');
- if (trace != null) print("StackTrace: $trace");
- apidoc.cleanup();
- exit(1);
- })
- .whenComplete(() => apidoc.cleanup());
- });
-}
-
-class Apidoc extends Dartdoc {
- /** Big ball of JSON containing the scraped MDN documentation. */
- final Map mdn;
-
-
- // A set of type names (TypeMirror.simpleName values) to ignore while
- // looking up information from MDN data. TODO(eub, jacobr): fix up the MDN
- // import scripts so they run correctly and generate data that doesn't have
- // any entries that need to be ignored.
- static Set<String> _mdnTypeNamesToSkip = null;
-
- /**
- * The URL to the page on MDN that content was pulled from for the current
- * type being documented. Will be `null` if the type doesn't use any MDN
- * content.
- */
- String mdnUrl = null;
-
- Apidoc(this.mdn, String outputDir, int mode, bool generateAppCache,
- [List<String> excludedLibraries, String version]) {
- if (excludedLibraries != null) this.excludedLibraries = excludedLibraries;
- this.version = version;
- this.outputDir = outputDir;
- this.mode = mode;
- this.generateAppCache = generateAppCache;
-
- // Skip bad entries in the checked-in mdn/database.json:
- // * UnknownElement has a top-level Gecko DOM page in German.
- if (_mdnTypeNamesToSkip == null)
- _mdnTypeNamesToSkip = new Set.from(['UnknownElement']);
-
- mainTitle = 'Dart API Reference';
- mainUrl = 'http://dartlang.org';
-
- final note = 'http://code.google.com/policies.html#restrictions';
- final cca = 'http://creativecommons.org/licenses/by/3.0/';
- final bsd = 'http://code.google.com/google_bsd_license.html';
- final tos = 'http://www.dartlang.org/tos.html';
- final privacy = 'http://www.google.com/intl/en/privacy/privacy-policy.html';
-
- footerText =
- '''
- <p>Except as otherwise <a href="$note">noted</a>, the content of this
- page is licensed under the <a href="$cca">Creative Commons Attribution
- 3.0 License</a>, and code samples are licensed under the
- <a href="$bsd">BSD License</a>.</p>
- <p><a href="$tos">Terms of Service</a> |
- <a href="$privacy">Privacy Policy</a></p>
- ''';
-
- searchEngineId = '011220921317074318178:i4mscbaxtru';
- searchResultsUrl = 'http://www.dartlang.org/search.html';
- }
-
- void writeHeadContents(String title) {
- super.writeHeadContents(title);
-
- // Include the apidoc-specific CSS.
- // TODO(rnystrom): Use our CSS pre-processor to combine these.
- writeln(
- '''
- <link rel="stylesheet" type="text/css"
- href="${relativePath('apidoc-styles.css')}" />
- ''');
-
- // Add the analytics code.
- writeln(
- '''
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(["_setAccount", "UA-26406144-9"]);
- _gaq.push(["_trackPageview"]);
-
- (function() {
- var ga = document.createElement("script");
- ga.type = "text/javascript"; ga.async = true;
- ga.src = ("https:" == document.location.protocol ?
- "https://ssl" : "http://www") + ".google-analytics.com/ga.js";
- var s = document.getElementsByTagName("script")[0];
- s.parentNode.insertBefore(ga, s);
- })();
- </script>
- ''');
- }
-
- void docIndexLibrary(LibraryMirror library) {
- // TODO(rnystrom): Hackish. The IO libraries reference this but we don't
- // want it in the docs.
- if (displayName(library) == 'dart:nativewrappers') return;
- super.docIndexLibrary(library);
- }
-
- void docLibraryNavigationJson(LibraryMirror library, List libraryList) {
- // TODO(rnystrom): Hackish. The IO libraries reference this but we don't
- // want it in the docs.
- if (displayName(library) == 'dart:nativewrappers') return;
- super.docLibraryNavigationJson(library, libraryList);
- }
-
- void docLibrary(LibraryMirror library) {
- // TODO(rnystrom): Hackish. The IO libraries reference this but we don't
- // want it in the docs.
- if (displayName(library) == 'dart:nativewrappers') return;
- super.docLibrary(library);
- }
-
- DocComment getLibraryComment(LibraryMirror library) {
- return super.getLibraryComment(library);
- }
-
- DocComment getTypeComment(TypeMirror type) {
- return _mergeDocs(
- includeMdnTypeComment(type), super.getTypeComment(type));
- }
-
- DocComment getMemberComment(DeclarationMirror member) {
- return _mergeDocs(
- includeMdnMemberComment(member), super.getMemberComment(member));
- }
-
- DocComment _mergeDocs(MdnComment mdnComment,
- DocComment fileComment) {
- // Otherwise, prefer comment from the (possibly generated) Dart file.
- if (fileComment != null) return fileComment;
-
- // Finally, fallback on MDN if available.
- if (mdnComment != null) {
- mdnUrl = mdnComment.mdnUrl;
- return mdnComment;
- }
-
- // We got nothing!
- return null;
- }
-
- void docType(TypeMirror type) {
- // Track whether we've inserted MDN content into this page.
- mdnUrl = null;
-
- super.docType(type);
- }
-
- void writeTypeFooter() {
- if (mdnUrl != null) {
- final MOZ = 'http://www.mozilla.org/';
- final MDN = 'https://developer.mozilla.org';
- final CCA = 'http://creativecommons.org/licenses/by-sa/2.5/';
- final CONTRIB = 'https://developer.mozilla.org/Project:en/How_to_Help';
- writeln(
- '''
- <p class="mdn-attribution">
- <a href="$MDN">
- <img src="${relativePath('mdn-logo-tiny.png')}" class="mdn-logo" />
- </a>
- This page includes <a href="$mdnUrl">content</a> from the
- <a href="$MOZ">Mozilla Foundation</a> that is graciously
- <a href="$MDN/Project:Copyrights">licensed</a> under a
- <a href="$CCA">Creative Commons: Attribution-Sharealike license</a>.
- Mozilla has no other association with Dart or dartlang.org. We
- encourage you to improve the web by
- <a href="$CONTRIB">contributing</a> to
- <a href="$MDN">The Mozilla Developer Network</a>.
- </p>
- ''');
- }
- }
-
- MdnComment lookupMdnComment(Mirror mirror) {
- if (mirror is TypeMirror) {
- return includeMdnTypeComment(mirror);
- } else if (mirror is MethodMirror || mirror is VariableMirror) {
- return includeMdnMemberComment(mirror);
- } else {
- return null;
- }
- }
-
- /**
- * Gets the MDN-scraped docs for [type], or `null` if this type isn't
- * scraped from MDN.
- */
- MdnComment includeMdnTypeComment(TypeMirror type) {
- if (_mdnTypeNamesToSkip.contains(type.simpleName)) {
- return null;
- }
-
- var typeString = '';
- if (HTML_LIBRARY_URIS.contains(getLibrary(type).uri)) {
- // If it's an HTML type, try to map it to a base DOM type so we can find
- // the MDN docs.
- final domTypes = _diff.htmlTypesToDom[type.qualifiedName];
-
- // Couldn't find a DOM type.
- if ((domTypes == null) || (domTypes.length != 1)) return null;
-
- // Use the corresponding DOM type when searching MDN.
- // TODO(rnystrom): Shame there isn't a simpler way to get the one item
- // out of a singleton Set.
- // TODO(floitsch): switch to domTypes.first, once that's implemented.
- var iter = domTypes.iterator;
- iter.moveNext();
- typeString = iter.current;
- } else {
- // Not a DOM type.
- return null;
- }
-
- final mdnType = mdn[typeString];
- if (mdnType == null) return null;
- if (mdnType['skipped'] != null) return null;
- if (mdnType['summary'] == null) return null;
- if (mdnType['summary'].trim().isEmpty) return null;
-
- // Remember which MDN page we're using so we can attribute it.
- return new MdnComment(mdnType['summary'], mdnType['srcUrl']);
- }
-
- /**
- * Gets the MDN-scraped docs for [member], or `null` if this type isn't
- * scraped from MDN.
- */
- MdnComment includeMdnMemberComment(DeclarationMirror member) {
- var library = getLibrary(member);
- var memberString = '';
- if (HTML_LIBRARY_URIS.contains(library.uri)) {
- // If it's an HTML type, try to map it to a DOM type name so we can find
- // the MDN docs.
- final domMembers = _diff.htmlToDom[member.qualifiedName];
-
- // Couldn't find a DOM type.
- if ((domMembers == null) || (domMembers.length != 1)) return null;
-
- // Use the corresponding DOM member when searching MDN.
- // TODO(rnystrom): Shame there isn't a simpler way to get the one item
- // out of a singleton Set.
- // TODO(floitsch): switch to domTypes.first, once that's implemented.
- var iter = domMembers.iterator;
- iter.moveNext();
- memberString = iter.current;
- } else {
- // Not a DOM type.
- return null;
- }
-
- // Ignore top-level functions.
- if (member.isTopLevel) return null;
-
- var mdnMember = null;
- var mdnType = null;
- var pieces = memberString.split('.');
- if (pieces.length == 2) {
- mdnType = mdn[pieces[0]];
- if (mdnType == null) return null;
- var nameToFind = pieces[1];
- for (final candidateMember in mdnType['members']) {
- if (candidateMember['name'] == nameToFind) {
- mdnMember = candidateMember;
- break;
- }
- }
- }
-
- if (mdnMember == null) return null;
- if (mdnMember['help'] == null) return null;
- if (mdnMember['help'].trim().isEmpty) return null;
-
- // Remember which MDN page we're using so we can attribute it.
- return new MdnComment(mdnMember['help'], mdnType['srcUrl']);
- }
-
- /**
- * Returns a link to [member], relative to a type page that may be in a
- * different library than [member].
- */
- String _linkMember(DeclarationMirror member) {
- final typeName = member.owner.simpleName;
- var memberName = '$typeName.${member.simpleName}';
- if (member is MethodMirror && member.isConstructor) {
- final separator = member.constructorName == '' ? '' : '.';
- memberName = 'new $typeName$separator${member.constructorName}';
- }
-
- return a(memberUrl(member), memberName);
- }
-}
-
« no previous file with comments | « utils/apidoc/README.txt ('k') | utils/apidoc/docgen.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698