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

Unified Diff: sdk/lib/_internal/dartdoc/lib/dartdoc.dart

Issue 12217077: Generate separate json files for each library. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: ready to review Created 7 years, 10 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
Index: sdk/lib/_internal/dartdoc/lib/dartdoc.dart
diff --git a/sdk/lib/_internal/dartdoc/lib/dartdoc.dart b/sdk/lib/_internal/dartdoc/lib/dartdoc.dart
index e9882ff8fe61cec26f6448c3b1d39ba1fe53f4ea..0d00b9b397f9765dcc68092c3fb3ca63d31e71c5 100644
--- a/sdk/lib/_internal/dartdoc/lib/dartdoc.dart
+++ b/sdk/lib/_internal/dartdoc/lib/dartdoc.dart
@@ -143,6 +143,37 @@ Future<bool> compileScript(int mode, Path outputDir, Path libPath) {
return completer.future;
}
+/**
+ * Package manifest containing all information required to render the main page
+ * for a package.
+ *
+ * The manifest specifies where to load the [LibraryElement]s describing each
+ * library rather than including them directly.
+ * For our purposes we treat the dart core libraries as a package.
Andrei Mouravski 2013/02/08 23:36:31 Either "... the `dart:core` library..." or "... th
Jacob 2013/02/09 02:37:28 Done.
+ */
+class PackageManifest {
+ /** Package name. */
+ final name;
+ /** Package description */
+ final description;
+ /** Libraries contained in this package. */
+ final List<String> libraries = <String>[];
+ /** Descriptive string describing the version# of the package. */
Andrei Mouravski 2013/02/08 23:36:31 What makes the string "descriptive"? Is that like,
Jacob 2013/02/09 02:37:28 * The current format for dart-sdk versions is *
+ final String fullVersion;
+ /** Source control revision # of the package. */
Andrei Mouravski 2013/02/08 23:36:31 What do you mean by revision #? Is this like build
Jacob 2013/02/09 02:37:28 currently 18233 for SVN. Will use hashes for git.
Jacob 2013/02/09 02:37:28 * Source control revision number for the package.
+ final String revision;
+ /** Path to the directory containing data files for each library. */
+ String location;
Andrei Mouravski 2013/02/08 23:36:31 Is this the lib dir or the src dir. How does this
Jacob 2013/02/09 02:37:28 This is for the serialized version (json) for the
+ /**
+ * Packages depended on by this package.
+ * We currently store the entire manifest for the depency here the manifests
+ * are small. We may want to change this to a reference in the future.
+ */
+ final List<PackageManifest> dependencies = <PackageManifest>[];
+
+ PackageManifest(this.name, this.description, this.fullVersion, this.revision);
+}
+
class Dartdoc {
/** Set to `false` to not include the source code in the generated docs. */
@@ -207,6 +238,9 @@ class Dartdoc {
/** Set this to inherit from Object. */
bool inheritFromObject = false;
+ /** Version of the sdk or package docs are being generated for. */
+ String version;
+
/** Set this to select the libraries to include in the documentation. */
List<String> includedLibraries = const <String>[];
@@ -356,11 +390,34 @@ class Dartdoc {
generateAppCacheManifest();
}
+ // TODO(jacobr): handle arbitrary pub packages rather than just the system
+ // libraries.
+ var revision = '';
+ if (version != null) {
+ revision = new RegExp(r"_r(\d+)_").firstMatch(version).group(1);
+ }
+ var packageManifest = new PackageManifest('dart:', 'Dart System Libraries',
+ version, revision);
+
+ for (final lib in _sortedLibraries) {
+ var libraryElement = new LibraryElement(lib.qualifiedName, lib)
+ ..stripDuplicateUris(null, null);
+ packageManifest.libraries.add(libraryElement.id);
+ startFile("$revision/${libraryElement.id}.json");
+
+ write(json_serializer.serialize(libraryElement));
+ endFile();
+ }
+
+ startFile("$revision/apidoc.json");
+ write(json_serializer.serialize(packageManifest));
+ endFile();
+
+ // Write out top level json file with a relative path to the library json
+ // files.
startFile("apidoc.json");
- var libraries = _sortedLibraries.map(
- (lib) => new LibraryElement(lib.qualifiedName, lib))
- .toList();
- write(json_serializer.serialize(libraries));
+ packageManifest.location = revision;
+ write(json_serializer.serialize(packageManifest));
endFile();
}

Powered by Google App Engine
This is Rietveld 408576698