Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 8 additions & 13 deletions bin/dartdoc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,14 @@ void main(List<String> arguments) {

Directory sdkDir = grinder.getSdkDir(arguments);
if (sdkDir == null) {
print(
"Warning: unable to locate the Dart SDK. Please use the --dart-sdk "
"command line option or set the DART_SDK environment variable.");
print("Warning: unable to locate the Dart SDK. Please use the --dart-sdk "
"command line option or set the DART_SDK environment variable.");
exit(1);
}

bool sdkDocs = false;
if (results['sdk-docs']) {
sdkDocs = true;
if (results['sdk-docs']) {
sdkDocs = true;
}

List<String> excludeLibraries =
Expand All @@ -43,10 +42,9 @@ void main(List<String> arguments) {
var currentDir = Directory.current;
var generators = initGenerators(url);
new DartDoc(currentDir, excludeLibraries, sdkDir, generators, sdkDocs)
..generateDocs();
..generateDocs();
}


/// Print help if we are passed the help option or invalid arguments.
void _printUsageAndExit(ArgParser parser) {
print(parser.usage);
Expand All @@ -59,17 +57,14 @@ ArgParser _createArgsParser() {
var parser = new ArgParser();
parser.addOption('exclude',
help: 'a comma-separated list of library names to ignore');
parser.addOption('dart-sdk',
help: 'the location of the Dart SDK');
parser.addOption('dart-sdk', help: 'the location of the Dart SDK');
parser.addOption('url',
help: 'the url where the docs will be hosted (used to generate the sitemap)');
parser.addFlag('help',
abbr: 'h', negatable: false, help: 'show command help');
parser.addFlag('version',
help: 'Display the version for $NAME', negatable: false);
parser.addFlag(
'sdk-docs',
help: 'generate docs for the dart sdk.'
'Use "--dart-sdk" option to specify path to sdk');
parser.addFlag('sdk-docs', help: 'generate docs for the dart sdk.'
'Use "--dart-sdk" option to specify path to sdk');
return parser;
}
33 changes: 15 additions & 18 deletions lib/dartdoc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ library dartdoc;

import 'dart:io';

import 'package:analyzer/src/generated/ast.dart';
import 'package:analyzer/src/generated/element.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/java_io.dart';
Expand All @@ -27,7 +26,6 @@ const String NAME = 'dartdoc';
// Update when puspec version changes
const String VERSION = '0.0.1';


/// Initialize and setup the generators
List<Generator> initGenerators(String url) {
List<Generator> generators = [];
Expand All @@ -46,11 +44,8 @@ class DartDoc {
Set<LibraryElement> libraries = new Set();
List<Generator> _generators;

DartDoc(this._rootDir,
this._excludes,
this._sdkDir,
this._generators,
[this._sdkDocs = false]);
DartDoc(this._rootDir, this._excludes, this._sdkDir, this._generators,
[this._sdkDocs = false]);

/// Generate the documentation
void generateDocs() {
Expand All @@ -61,10 +56,10 @@ class DartDoc {
List<LibraryElement> libs = [];
libs.addAll(_parseLibraries(files));
// remove excluded libraries
_excludes.forEach((pattern)
=> libs.removeWhere((l) => l.name.startsWith(pattern)));
libs.removeWhere((LibraryElement library)
=> _excludes.contains(library.name));
_excludes.forEach(
(pattern) => libs.removeWhere((l) => l.name.startsWith(pattern)));
libs.removeWhere(
(LibraryElement library) => _excludes.contains(library.name));
libs.sort(elementCompare);
libraries.addAll(libs);

Expand All @@ -79,32 +74,34 @@ 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<LibraryElement> _parseLibraries(List<String> files) {
DartSdk sdk = new DirectoryBasedDartSdk(new JavaFile(_sdkDir.path));
ContentCache contentCache = new ContentCache();
List<UriResolver> resolvers = [new DartUriResolver(sdk),
new FileUriResolver()];
List<UriResolver> resolvers = [
new DartUriResolver(sdk),
new FileUriResolver()
];
JavaFile packagesDir =
new JavaFile.relative(new JavaFile(_rootDir.path), 'packages');
if (packagesDir.exists()) {
resolvers.add(new PackageUriResolver([packagesDir]));
}
SourceFactory sourceFactory = new SourceFactory(/*contentCache,*/ resolvers);
SourceFactory sourceFactory =
new SourceFactory(/*contentCache,*/ resolvers);
AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
context.sourceFactory = sourceFactory;

if (_sdkDocs) {
libraries.addAll(getSdkLibrariesToDocument(sdk, context));
libraries.addAll(getSdkLibrariesToDocument(sdk, context));
}
files.forEach((String filePath) {
print('parsing ${filePath}...');
Source source = new FileBasedSource.con1(new JavaFile(filePath));
if (context.computeKindOf(source) == SourceKind.LIBRARY) {
LibraryElement library = context.computeLibraryElement(source);
CompilationUnit unit = context.resolveCompilationUnit(source, library);
libraries.add(library);
libraries.addAll(library.exportedLibraries);
}
Expand Down
1 change: 0 additions & 1 deletion lib/generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import 'src/model.dart';
/// for a given package. Generators can generate documentation in different
/// formats - html, json etc
abstract class Generator {

Package package;
Directory out;

Expand Down
2 changes: 0 additions & 2 deletions lib/src/css.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@
library dartdoc.css;

class CSS {

final String cssHeader =
'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css';

final String theme =
'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css';

String getCssName() => 'bootstrap.css';

}
24 changes: 13 additions & 11 deletions lib/src/html_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,18 @@ body {
margin: 8px;
}''';

static final String bootstrapCss = 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css';
static final String bootstrapTheme ='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css';
static final String bootstrapCss =
'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css';
static final String bootstrapTheme =
'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css';

HtmlPrinter html = new HtmlPrinter();
CSS css = new CSS();
HtmlGeneratorHelper helper;
List<String> htmlFiles = [];
String url;

HtmlGenerator(this.url) {

}
HtmlGenerator(this.url) {}

void generate(Package package, Directory out) {
this.package = package;
Expand All @@ -51,15 +51,17 @@ body {

void generatePackage() {
var data = {
'css' : bootstrapCss,
'theme' : bootstrapTheme,
'css': bootstrapCss,
'theme': bootstrapTheme,
'packageName': package.name,
'packageDesc': package.description,
'packageVersion': package.version,
'libraries': package.libraries.map((lib) {
return {'name': lib.name,
'filename': _getFileNameFor(lib),
'descr': getDocOneLiner(lib)};
return {
'name': lib.name,
'filename': _getFileNameFor(lib),
'descr': getDocOneLiner(lib)
};
})
};
var fileName = 'index.html';
Expand Down Expand Up @@ -352,7 +354,7 @@ body {
if (doc == null || doc == '') return null;
var endOfFirstSentence = doc.indexOf('.');
if (endOfFirstSentence >= 0) {
return doc.substring(0, endOfFirstSentence+1);
return doc.substring(0, endOfFirstSentence + 1);
} else {
return doc;
}
Expand Down
3 changes: 2 additions & 1 deletion lib/src/html_printer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ class HtmlPrinter {
endTag();
}

void start({String title, String cssRef, String theme, String jsScript, String inlineStyle}) {
void start({String title, String cssRef, String theme, String jsScript,
String inlineStyle}) {
startTag('html', newLine: false);
writeln();
startTag('head');
Expand Down
4 changes: 2 additions & 2 deletions lib/src/io_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ List<String> _doList(String dir, Set<String> listedDirectories, bool recurse,
contents.add(entity.path);
if (entity is Directory) {
if (recurse) {
children.addAll(
_doList(entity.path, listedDirectories, recurse, listDir));
children
.addAll(_doList(entity.path, listedDirectories, recurse, listDir));
}
}
}
Expand Down
59 changes: 29 additions & 30 deletions lib/src/model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,8 @@ abstract class ModelElement {
String createLinkedSummary(Helper generator) {
if (isExecutable) {
ExecutableElement ex = (element as ExecutableElement);
String retType = generator.createLinkedReturnTypeName(
new ElementType(ex.type, library));
String retType = generator
.createLinkedReturnTypeName(new ElementType(ex.type, library));

return '${generator.createLinkedName(this)}'
'(${generator.printParams(ex.parameters.map((f) =>
Expand All @@ -133,8 +133,9 @@ abstract class ModelElement {
PropertyInducingElement pe = (element as PropertyInducingElement);
StringBuffer buf = new StringBuffer();
buf.write('${generator.createLinkedName(this)}');
String type = generator.createLinkedName(pe.type == null ? null :
new ModelElement.from(pe.type.element, library));
String type = generator.createLinkedName(pe.type == null
? null
: new ModelElement.from(pe.type.element, library));
if (!type.isEmpty) {
buf.write(': $type');
}
Expand All @@ -152,8 +153,8 @@ abstract class ModelElement {
buf.write('static ');
}

buf.write(generator.createLinkedReturnTypeName(
new ElementType(e.type, library)));
buf.write(generator
.createLinkedReturnTypeName(new ElementType(e.type, library)));
buf.write(
' ${e.name}(${generator.printParams(e.parameters.map((f) => new Parameter(f, library)).toList())})');
return buf.toString();
Expand All @@ -171,8 +172,9 @@ abstract class ModelElement {
buf.write('const ');
}

buf.write(generator.createLinkedName(e.type == null ? null :
new ModelElement.from(e.type.element, library)));
buf.write(generator.createLinkedName(e.type == null
? null
: new ModelElement.from(e.type.element, library)));
buf.write(' ${e.name}');

// write out any constant value
Expand Down Expand Up @@ -202,26 +204,23 @@ class Package {
String get name =>
_isSdk ? 'Dart API Reference' : getPackageName(_rootDirPath);

String get version =>
_isSdk ? _sdkVersion : getPackageVersion(_rootDirPath);
String get version => _isSdk ? _sdkVersion : getPackageVersion(_rootDirPath);

String get description =>
_isSdk ? 'Dart API Libraries' : getPackageDescription(_rootDirPath);

List<Library> get libraries => _libraries;

Package(Iterable<LibraryElement> libraryElements,
this._rootDirPath,
[this._sdkVersion,
this._isSdk = false]) {
Package(Iterable<LibraryElement> libraryElements, this._rootDirPath,
[this._sdkVersion, this._isSdk = false]) {
libraryElements.forEach((element) {
_libraries.add(new Library(element));
});
}

bool isDocumented(ModelElement e) {
if (e is Library) {
return _libraries.any((library) => library.element == e.element);
return _libraries.any((library) => library.element == e.element);
}
return _libraries.contains(e.library);
}
Expand Down Expand Up @@ -373,8 +372,8 @@ class ModelFunction extends ModelElement {
String get typeName => 'Functions';

String createLinkedSummary(Helper generator) {
String retType = generator.createLinkedReturnTypeName(
new ElementType(_func.type, library));
String retType = generator
.createLinkedReturnTypeName(new ElementType(_func.type, library));

return '${generator.createLinkedName(this)}'
'(${generator.printParams(_func.parameters.map((f) => new Parameter(f, library)))})'
Expand All @@ -386,8 +385,8 @@ class ModelFunction extends ModelElement {
if (_func.isStatic) {
buf.write('static ');
}
buf.write(generator.createLinkedReturnTypeName(
new ElementType(_func.type, library)));
buf.write(generator
.createLinkedReturnTypeName(new ElementType(_func.type, library)));
buf.write(
' ${_func.name}(${generator.printParams(_func.parameters.map((f) => new Parameter(f, library)).toList())})');
return buf.toString();
Expand Down Expand Up @@ -419,8 +418,8 @@ class Typedef extends ModelElement {
}
buf.write(
'(${generator.printParams(_typedef.parameters.map((f) => new Parameter(f, library)).toList())}): ');
buf.write(generator.createLinkedReturnTypeName(
new ElementType(_typedef.type, library)));
buf.write(generator
.createLinkedReturnTypeName(new ElementType(_typedef.type, library)));
return buf.toString();
}

Expand Down Expand Up @@ -522,8 +521,8 @@ class Accessor extends ModelElement {
buf.write(generator.createLinkedName(this));
buf.write(': ');
buf.write(generator.createLinkedReturnTypeName(new ElementType(
_accessor.type, new ModelElement.from(
_accessor.type.element, library))));
_accessor.type,
new ModelElement.from(_accessor.type.element, library))));
} else {
buf.write('${generator.createLinkedName(this)}('
'${generator.printParams(_accessor.parameters.map((f) =>
Expand Down Expand Up @@ -576,15 +575,15 @@ class Parameter extends ModelElement {

class TypeParameter extends ModelElement {
TypeParameter(TypeParameterElement element, Library library)
: super(element, library);
: super(element, library);

TypeParameterElement get _typeParameter => element as TypeParameterElement;
TypeParameterElement get _typeParameter => element as TypeParameterElement;

ElementType get type => new ElementType(_typeParameter.type, library);
ElementType get type => new ElementType(_typeParameter.type, library);

String toString() => element.name;
String toString() => element.name;

String get typeName => 'Type Parameters';
String get typeName => 'Type Parameters';
}

class ElementType {
Expand Down Expand Up @@ -615,8 +614,8 @@ class ElementType {
}
List<ElementType> get typeArguments =>
(_type as ParameterizedType).typeArguments
.map((f) => new ElementType(f, library))
.toList();
.map((f) => new ElementType(f, library))
.toList();
}

abstract class Helper {
Expand Down
Loading