Chromium Code Reviews| Index: utils/dartdoc/dartdoc.dart |
| diff --git a/frog/samples/doc.dart b/utils/dartdoc/dartdoc.dart |
| similarity index 93% |
| rename from frog/samples/doc.dart |
| rename to utils/dartdoc/dartdoc.dart |
| index 6ddb7a6ee7686d5e100211dbb245570453d8fb86..2a120532d4cd2a7016223b38b4a8a70e3a98cbf4 100644 |
| --- a/frog/samples/doc.dart |
| +++ b/utils/dartdoc/dartdoc.dart |
| @@ -2,30 +2,19 @@ |
| // 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. |
| -// TODO(rnystrom): This is moving from a sample to being a real project. Right |
| -// now, to try this out: |
| -// 1. Compile interact.dart to JS: |
| -// $ ./frogsh --out=docs/interact.js --compile-only docs/interact.dart |
| -// 2. Run the doc generator: |
| -// $ ./frogsh samples/doc.dart |
| -// 3. Look at the results in frog/docs/ |
| - |
| /** An awesome documentation generator. */ |
| -#library('doc'); |
| +#library('dartdoc'); |
| -#import('../lang.dart'); |
| -#import('../file_system_node.dart'); |
| -#import('classify.dart'); |
| +#import('../../frog/lang.dart'); |
| +#import('../../frog/file_system_node.dart'); |
| -/** Path to starting library or application. */ |
| -// TODO(rnystrom): Make this a command-line arg. |
| -final libPath = 'samples/doc.dart'; |
| +#source('classify.dart'); |
| /** Path to corePath library. */ |
| final corePath = 'lib'; |
| /** Path to generate html files into. */ |
| -final outdir = './docs'; |
| +final outdir = 'docs'; |
| /** Special comment position used to store the library-level doc comment. */ |
| final _libraryDoc = -1; |
| @@ -42,7 +31,9 @@ StringBuffer _file; |
| */ |
| Map<String, Map<int, String>> _comments; |
| -// TODO(jimhug): This generates really ugly output with lots of holes. |
|
Jennifer Messerly
2011/11/11 02:29:58
haha. yes, that TODO is very obsolete :)
jimhug
2011/11/11 18:02:31
Whoo hoo!
Bob Nystrom
2011/11/11 18:21:28
:D
Still need private members, but almost everyth
|
| +int _totalLibraries = 0; |
| +int _totalTypes = 0; |
| +int _totalMembers = 0; |
| /** |
| * Run this from the frog/samples directory. Before running, you need |
| @@ -50,21 +41,19 @@ Map<String, Map<int, String>> _comments; |
| * support creating new directories. |
| */ |
| void main() { |
| + // The entrypoint of the library to generate docs for. |
| + final libPath = process.argv[2]; |
| + |
| // TODO(rnystrom): Get options and homedir like frog.dart does. |
| final files = new NodeFileSystem(); |
| - parseOptions('.', [] /* args */, files); |
| + parseOptions('../../frog', [] /* args */, files); |
| - initializeWorld(files); |
| + final elapsed = time(() { |
| + initializeWorld(files); |
| - world.withTiming('parsed', () { |
| world.processScript(libPath); |
| - }); |
| - |
| - world.withTiming('resolved', () { |
| world.resolveAll(); |
| - }); |
| - world.withTiming('generated docs', () { |
| _comments = <String, Map<int, String>>{}; |
| for (var library in world.libraries.getValues()) { |
| @@ -73,6 +62,18 @@ void main() { |
| docIndex(world.libraries.getValues()); |
| }); |
| + |
| + print('Documented $_totalLibraries libraries, $_totalTypes types, and ' + |
| + '$_totalMembers members in ${elapsed}msec.'); |
|
jimhug
2011/11/11 18:02:31
Nice reporting code.
Bob Nystrom
2011/11/11 18:21:28
Thanks! I was using withTiming() before but that d
|
| +} |
| + |
| +num time(callback()) { |
| + // Unlike world.withTiming, returns the elapsed time. |
| + final watch = new StopWatch(); |
| + watch.start(); |
| + callback(); |
| + watch.stop(); |
| + return watch.elapsedInMs(); |
| } |
| startFile() { |
| @@ -133,6 +134,8 @@ docIndex(List<Library> libraries) { |
| } |
| docLibrary(Library library) { |
| + _totalLibraries++; |
| + |
| startFile(); |
| writeln( |
| ''' |
| @@ -159,7 +162,7 @@ docLibrary(Library library) { |
| for (var type in library.types.getValues()) { |
| if (needsSeparator) writeln('<hr/>'); |
| - if (docType(type)) needsSeparator = false; |
| + if (docType(type)) needsSeparator = true; |
| } |
| writeln( |
| @@ -176,6 +179,8 @@ docLibrary(Library library) { |
| * Returns [:true:] if it wrote anything. |
| */ |
| bool docType(Type type) { |
| + _totalTypes++; |
| + |
| bool wroteSomething = false; |
| if (type.name != null) { |
| @@ -286,6 +291,8 @@ docConstructors(Type type) { |
| */ |
| docMethod(String typeName, MethodMember method, |
| [String namedConstructor = null]) { |
| + _totalMembers++; |
| + |
| writeln( |
| ''' |
| <div class="method"><h4 id="$typeName.${method.name}"> |
| @@ -352,6 +359,8 @@ docMethod(String typeName, MethodMember method, |
| /** Documents the field [field] in a type named [typeName]. */ |
| docField(String typeName, FieldMember field) { |
| + _totalMembers++; |
| + |
| writeln( |
| ''' |
| <div class="field"><h4 id="$typeName.${field.name}"> |