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

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: PTAL 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
« no previous file with comments | « no previous file | sdk/lib/_internal/dartdoc/lib/src/json_serializer.dart » ('j') | tools/list_version.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..9d515441a77a4283f20b7d3cd59c340818a920c9 100644
--- a/sdk/lib/_internal/dartdoc/lib/dartdoc.dart
+++ b/sdk/lib/_internal/dartdoc/lib/dartdoc.dart
@@ -143,6 +143,51 @@ 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 core Dart libraries as a package.
+ */
+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.
+ *
+ * The current format for dart-sdk versions is
+ * $MAJOR.$MINOR.$BUILD.$PATCH$revisionString$userNameString
+ * For example: 0.1.2.0_r18233_johndoe
+ */
+ final String fullVersion;
+ /**
+ * Source control revision number for the package. For SVN this is a number
+ * while for GIT it is a hash.
+ */
+ final String revision;
+ /**
+ * Path to the directory containing data files for each library.
+ *
+ * Currently this is the serialized json version of the LibraryElement for
+ * the library.
+ */
+ String location;
+ /**
+ * 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 +252,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 +404,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();
}
« no previous file with comments | « no previous file | sdk/lib/_internal/dartdoc/lib/src/json_serializer.dart » ('j') | tools/list_version.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698