Index: pkg/docgen/lib/docgen.dart |
diff --git a/pkg/docgen/lib/docgen.dart b/pkg/docgen/lib/docgen.dart |
index d75b60f6910434507e801f508b942d694a4d4623..abc3eea59fcd0780250408947759cc1f06f35e39 100644 |
--- a/pkg/docgen/lib/docgen.dart |
+++ b/pkg/docgen/lib/docgen.dart |
@@ -42,11 +42,63 @@ var _outputDirectory; |
const String USAGE = 'Usage: dart docgen.dart [OPTIONS] fooDir/barFile'; |
- |
List<String> skippedAnnotations = const [ |
'metadata.DocsEditable', '_js_helper.JSName', '_js_helper.Creates', |
'_js_helper.Returns']; |
+/** |
Bob Nystrom
2014/01/08 00:16:57
Use a ///-style doc comment like the rest of this
Alan Knight
2014/01/08 01:22:52
Done.
|
+ * If we can't find the SDK introduction text, which will happen if running |
+ * from a snapshot and using --parse-sdk or --include-sdk, then use this |
+ * hard-coded version. This should be updated to be consistent with the text |
+ * in docgen/doc/sdk-introduction.md |
+ */ |
+const String DEFAULT_SDK_INTRODUCTION = """ |
Bob Nystrom
2014/01/08 00:16:57
You don't need to type annotate constants.
Alan Knight
2014/01/08 01:22:52
Done.
|
+Welcome to the Dart API reference documentation, |
+covering the official Dart API libraries. |
+Some of the most fundamental Dart libraries include: |
+ |
+* [dart:core](#dart:core): |
+ Core functionality such as strings, numbers, collections, errors, |
+ dates, and URIs. |
+* [dart:html](#dart:html): |
+ DOM manipulation for web apps. |
+* [dart:io](#dart:io): |
+ I/O for command-line apps. |
+ |
+Except for dart:core, you must import a library before you can use it. |
+Here's an example of importing dart:html, dart:math, and a |
+third popular library called |
+[polymer.dart](http://www.dartlang.org/polymer-dart/): |
+ |
+ import 'dart:html'; |
+ import 'dart:math'; |
+ import 'package:polymer/polymer.dart'; |
+ |
+Polymer.dart is an example of a library that isn't |
+included in the Dart download, |
+but is easy to get and update using the _pub package manager_. |
+For information on finding, using, and publishing libraries (and more) |
+with pub, see |
+[pub.dartlang.org](http://pub.dartlang.org). |
+ |
+The main site for learning and using Dart is |
+[www.dartlang.org](http://www.dartlang.org). |
+Check out these pages: |
+ |
+ * [Dart homepage](http://www.dartlang.org) |
+ * [Tutorials](http://www.dartlang.org/docs/tutorials/) |
+ * [Programmer's Guide](http://www.dartlang.org/docs/) |
+ * [Samples](http://www.dartlang.org/samples/) |
+ * [A Tour of the Dart Libraries](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html) |
+ |
+This API reference is automatically generated from the source code in the |
+[Dart project](https://code.google.com/p/dart/). |
+If you'd like to contribute to this documentation, see |
+[Contributing](https://code.google.com/p/dart/wiki/Contributing) |
+and |
+[Writing API Documentation](https://code.google.com/p/dart/wiki/WritingApiDocumentation). |
+"""; |
+ |
/// Set of libraries declared in the SDK, so libraries that can be accessed |
/// when running dart by default. |
Iterable<LibraryMirror> _sdkLibraries; |
@@ -357,6 +409,15 @@ void _documentLibraries(List<LibraryMirror> libs, {bool includeSdk: false, |
// This will help the viewer know what libraries are available to read in. |
var libraryMap; |
var linkResolver = (name) => fixReference(name, null, null, null); |
+ |
+ String readIntro(String introFileName) { |
+ var introFile = new File(introFileName); |
+ var introText = introFile.existsSync() ? introFile.readAsStringSync : |
+ DEFAULT_SDK_INTRODUCTION; |
+ return markdown.markdownToHtml(introText, |
+ linkResolver: linkResolver, inlineSyntaxes: markdownSyntaxes); |
+ } |
+ |
if (append) { |
var docsDir = listDir(_outputDirectory); |
if (!docsDir.contains('$_outputDirectory/library_list.json')) { |
@@ -371,20 +432,14 @@ void _documentLibraries(List<LibraryMirror> libs, {bool includeSdk: false, |
if (introduction.isNotEmpty) { |
var intro = libraryMap['introduction']; |
if (intro.isNotEmpty) intro += '<br/><br/>'; |
- intro += markdown.markdownToHtml( |
- new File(introduction).readAsStringSync(), |
- linkResolver: linkResolver, inlineSyntaxes: markdownSyntaxes); |
- libraryMap['introduction'] = intro; |
+ libraryMap['introduction'] = "$intro${readIntro(introduction)}"; |
} |
outputToYaml = libraryMap['filetype'] == 'yaml'; |
} else { |
libraryMap = { |
'libraries' : filteredEntities.where((e) => |
e is Library).map((e) => e.previewMap).toList(), |
- 'introduction' : introduction == '' ? |
- '' : markdown.markdownToHtml(new File(introduction) |
- .readAsStringSync(), linkResolver: linkResolver, |
- inlineSyntaxes: markdownSyntaxes), |
+ 'introduction' : introduction.isEmpty ? '' : readIntro(introduction), |
'filetype' : outputToYaml ? 'yaml' : 'json' |
}; |
} |