From 4471c7dc17a0abfd3e47e6b3f32435f0323866c4 Mon Sep 17 00:00:00 2001 From: keertip Date: Wed, 26 Nov 2014 06:24:00 -0800 Subject: [PATCH 1/4] add a top level file --- lib/dartdoc.dart | 45 ++++++++++++++++++++++++++++++++++++------- lib/src/html_gen.dart | 2 +- pubspec.yaml | 1 + 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/lib/dartdoc.dart b/lib/dartdoc.dart index 9d08954f9c..ec69223c24 100644 --- a/lib/dartdoc.dart +++ b/lib/dartdoc.dart @@ -14,11 +14,13 @@ import 'package:analyzer/src/generated/sdk.dart'; import 'package:analyzer/src/generated/sdk_io.dart'; import 'package:analyzer/src/generated/source_io.dart'; + import 'src/css.dart'; import 'src/helpers.dart'; import 'src/html_gen.dart'; import 'src/io_utils.dart'; import 'src/model_utils.dart'; +import 'src/package_utils.dart'; import 'src/utils.dart'; const String DEFAULT_OUTPUT_DIRECTORY = 'docs'; @@ -52,6 +54,7 @@ class DartDoc { } // generate the docs html = new HtmlGenerator(); + generatePackage(); libraries.forEach((lib) => generateLibrary(lib)); // copy the css resource into 'out' File f = joinFile(new Directory(out.path), [css.getCssName()]); @@ -59,9 +62,7 @@ class DartDoc { double seconds = stopwatch.elapsedMilliseconds / 1000.0; print(''); - print("Documented ${libraries.length} " - "librar${libraries.length == 1 ? 'y' : 'ies'} in " - "${seconds.toStringAsFixed(1)} seconds."); + print("Documented ${libraries.length} " "librar${libraries.length == 1 ? 'y' : 'ies'} in " "${seconds.toStringAsFixed(1)} seconds."); } List parseLibraries(List files) { @@ -104,13 +105,43 @@ class DartDoc { return new File(Platform.executable).parent.parent; } + void generatePackage() { + var packageName = getPackageName(_rootDir.path); + if (packageName.isNotEmpty) { + File f = joinFile(new Directory(out.path), ['${packageName}_package.html']); + print('generating ${f.path}'); + html = new HtmlGenerator(); + html.start(title: 'Package ${packageName}', cssRef: css.getCssName()); + generateHeader(); + + html.startTag('div', attributes: "class='container'", newLine: false); + html.writeln(); + html.startTag('div', attributes: "class='row'", newLine: false); + html.writeln(); + html.startTag('div', attributes: "class='span3'"); + for (LibraryElement lib in libraries) { + html.startTag('li', newLine: false); + html.write('' ' ' '${lib.name}'); + html.endTag(); // li + } + html.endTag(); // div.span3 + html.endTag(); // div.container + generateFooter(); + html.end(); + f.writeAsStringSync(html.toString()); + } + + } + + + void generateLibrary(LibraryElement library) { File f = joinFile(new Directory(out.path), [getFileNameFor(library)]); print('generating ${f.path}'); html = new HtmlGenerator(); html.start(title: 'Library ${library.name}', cssRef: css.getCssName()); - generateHeader(library); + generateHeader(); html.startTag('div', attributes: "class='container'", newLine: false); html.writeln(); @@ -195,7 +226,7 @@ class DartDoc { html.endTag(); // div.container - generateFooter(library); + generateFooter(); html.end(); @@ -203,13 +234,13 @@ class DartDoc { f.writeAsStringSync(html.toString()); } - void generateHeader(LibraryElement library) { + void generateHeader() { // header html.startTag('header'); html.endTag(); } - void generateFooter(LibraryElement library) { + void generateFooter() { // footer html.startTag('footer'); // html.startTag('div', 'class="navbar navbar-fixed-bottom"'); diff --git a/lib/src/html_gen.dart b/lib/src/html_gen.dart index 5529cc4686..ebd156b364 100644 --- a/lib/src/html_gen.dart +++ b/lib/src/html_gen.dart @@ -14,7 +14,7 @@ class HtmlGenerator { HtmlGenerator() { writeln(''); writeln(); - writeln(''); + writeln(''); writeln(); } diff --git a/pubspec.yaml b/pubspec.yaml index 5e6a30e68d..c72f2de07a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -8,5 +8,6 @@ dependencies: args: any logging: any path: any + yaml: any executables: dartdoc: null From f26788019126403d1e8a38622e564cd7c98d8c8a Mon Sep 17 00:00:00 2001 From: keertip Date: Wed, 26 Nov 2014 19:51:27 -0800 Subject: [PATCH 2/4] fix the html --- lib/dartdoc.dart | 20 ++++++++++++++++---- lib/src/package_utils.dart | 23 +++++++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 lib/src/package_utils.dart diff --git a/lib/dartdoc.dart b/lib/dartdoc.dart index ec69223c24..fae20ef7e4 100644 --- a/lib/dartdoc.dart +++ b/lib/dartdoc.dart @@ -119,12 +119,24 @@ class DartDoc { html.startTag('div', attributes: "class='row'", newLine: false); html.writeln(); html.startTag('div', attributes: "class='span3'"); + html.startTag('ul', attributes: 'class="nav nav-tabs nav-stacked left-nav"'); + html.startTag('li', attributes: 'class="active"', newLine: false); + html.write('' ' ' '${packageName}'); + html.endTag(); //li + html.endTag(); //ul + html.endTag(); + html.startTag('div', attributes: "class='span9'"); + html.tag('h1', contents: packageName); + html.writeln('
'); + html.startTag('dl'); + html.startTag('h4'); + html.tag('dt', contents: 'Libraries'); + html.endTag(); + html.startTag('dd'); for (LibraryElement lib in libraries) { - html.startTag('li', newLine: false); - html.write('' ' ' '${lib.name}'); - html.endTag(); // li + html.writeln(' ${lib.name}
'); } - html.endTag(); // div.span3 + html.endTag(); html.endTag(); // div.container generateFooter(); html.end(); diff --git a/lib/src/package_utils.dart b/lib/src/package_utils.dart new file mode 100644 index 0000000000..f39eec2153 --- /dev/null +++ b/lib/src/package_utils.dart @@ -0,0 +1,23 @@ +// Copyright (c) 2014, 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. + + +library dartdoc.package_utils; + +import 'dart:io'; + +import 'package:path/path.dart' as path; +import 'package:yaml/yaml.dart'; + + +String getPackageName(String directoryName) => + _getPubspec(directoryName)['name']; + + Map _getPubspec(String directoryName) { + var pubspecName = path.join(directoryName, 'pubspec.yaml'); + File pubspec = new File(pubspecName); + if (!pubspec.existsSync()) return {'name': ''}; + var contents = pubspec.readAsStringSync(); + return loadYaml(contents); + } \ No newline at end of file From 3a3109a9a79d4bcea9c8f7085cbc4b3b6fbd6e37 Mon Sep 17 00:00:00 2001 From: keertip Date: Wed, 26 Nov 2014 19:56:28 -0800 Subject: [PATCH 3/4] add description --- lib/dartdoc.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/dartdoc.dart b/lib/dartdoc.dart index fae20ef7e4..1469b83fdb 100644 --- a/lib/dartdoc.dart +++ b/lib/dartdoc.dart @@ -107,6 +107,7 @@ class DartDoc { void generatePackage() { var packageName = getPackageName(_rootDir.path); + var packageDesc = getPackageDescription(_rootDir.path); if (packageName.isNotEmpty) { File f = joinFile(new Directory(out.path), ['${packageName}_package.html']); print('generating ${f.path}'); @@ -128,6 +129,7 @@ class DartDoc { html.startTag('div', attributes: "class='span9'"); html.tag('h1', contents: packageName); html.writeln('
'); + html.write(packageDesc); html.startTag('dl'); html.startTag('h4'); html.tag('dt', contents: 'Libraries'); From 873264cb97813f7e3b111ce7dd720e80d295e590 Mon Sep 17 00:00:00 2001 From: keertip Date: Wed, 26 Nov 2014 19:57:09 -0800 Subject: [PATCH 4/4] package desc --- lib/src/package_utils.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/src/package_utils.dart b/lib/src/package_utils.dart index f39eec2153..d17ce40dc2 100644 --- a/lib/src/package_utils.dart +++ b/lib/src/package_utils.dart @@ -20,4 +20,7 @@ String getPackageName(String directoryName) => if (!pubspec.existsSync()) return {'name': ''}; var contents = pubspec.readAsStringSync(); return loadYaml(contents); - } \ No newline at end of file + } + + String getPackageDescription(String directoryName) => + _getPubspec(directoryName)['description']; \ No newline at end of file