mirror of
https://github.com/dart-lang/sdk
synced 2024-09-20 01:28:21 +00:00
Enable re-export in docgen. Work in progress. More to come.
BUG= R=alanknight@google.com Review URL: https://codereview.chromium.org//138623002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31793 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
parent
bb92c20bfb
commit
c57b55c5dd
|
@ -4,6 +4,9 @@
|
|||
|
||||
library barback;
|
||||
|
||||
import 'src/transform.dart';
|
||||
import 'src/transformer.dart';
|
||||
|
||||
export 'src/asset.dart';
|
||||
export 'src/asset_id.dart';
|
||||
export 'src/asset_set.dart';
|
||||
|
|
|
@ -17,7 +17,6 @@ List<String> excludedLibraries = [];
|
|||
* classes, and members.
|
||||
*/
|
||||
void main(List<String> arguments) {
|
||||
logger.onRecord.listen((record) => print(record.message));
|
||||
var results = _initArgParser().parse(arguments);
|
||||
|
||||
var includeSdk = results['parse-sdk'] || results['include-sdk'];
|
||||
|
@ -48,8 +47,8 @@ ArgParser _initArgParser() {
|
|||
negatable: false,
|
||||
callback: (help) {
|
||||
if (help) {
|
||||
logger.info(parser.getUsage());
|
||||
logger.info(USAGE);
|
||||
print(parser.getUsage());
|
||||
print('Usage: dart docgen.dart [OPTIONS] fooDir/barFile');
|
||||
exit(0);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
*/
|
||||
library dart2yaml;
|
||||
|
||||
import 'dart:collection';
|
||||
|
||||
/**
|
||||
* Gets a String representing the input Map in YAML format.
|
||||
*/
|
||||
|
@ -28,7 +26,7 @@ String getYamlString(Map documentData) {
|
|||
*/
|
||||
void _addLevel(StringBuffer yaml, Map documentData, int level,
|
||||
{bool isList: false}) {
|
||||
// The order of the keys could be nondeterministic, but it is insufficient
|
||||
// The order of the keys could be nondeterministic, but it is insufficient
|
||||
// to just sort the keys no matter what, as their order could be significant
|
||||
// (i.e. parameters to a method). The order of the keys should be enforced
|
||||
// by the caller of this function.
|
||||
|
@ -36,7 +34,7 @@ void _addLevel(StringBuffer yaml, Map documentData, int level,
|
|||
keys.forEach((key) {
|
||||
_calcSpaces(level, yaml);
|
||||
// Only the first entry of the map should be preceeded with a '-' since
|
||||
// the map is a member of an outer list and the map as a whole must be
|
||||
// the map is a member of an outer list and the map as a whole must be
|
||||
// marked as a single member of that list. See example 2.4 at
|
||||
// http://www.yaml.org/spec/1.2/spec.html#id2759963
|
||||
if (isList && key == keys.first) {
|
||||
|
|
File diff suppressed because it is too large
Load diff
174
pkg/docgen/test/multi_library_test.dart
Normal file
174
pkg/docgen/test/multi_library_test.dart
Normal file
|
@ -0,0 +1,174 @@
|
|||
library single_library_test;
|
||||
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'package:unittest/unittest.dart';
|
||||
|
||||
import '../lib/docgen.dart';
|
||||
|
||||
const String DART_LIBRARY_1 = '''
|
||||
library testLib;
|
||||
import 'temp2.dart';
|
||||
import 'temp3.dart';
|
||||
export 'temp2.dart';
|
||||
export 'temp3.dart';
|
||||
|
||||
/**
|
||||
* Doc comment for class [A].
|
||||
*
|
||||
* Multiline Test
|
||||
*/
|
||||
/*
|
||||
* Normal comment for class A.
|
||||
*/
|
||||
class A {
|
||||
|
||||
int _someNumber;
|
||||
|
||||
A() {
|
||||
_someNumber = 12;
|
||||
}
|
||||
|
||||
A.customConstructor();
|
||||
|
||||
/**
|
||||
* Test for linking to parameter [A]
|
||||
*/
|
||||
void doThis(int A) {
|
||||
print(A);
|
||||
}
|
||||
}
|
||||
''';
|
||||
|
||||
const String DART_LIBRARY_2 = '''
|
||||
library testLib2.foo;
|
||||
import 'temp.dart';
|
||||
|
||||
/**
|
||||
* Doc comment for class [B].
|
||||
*
|
||||
* Multiline Test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Normal comment for class B.
|
||||
*/
|
||||
class B extends A {
|
||||
|
||||
B();
|
||||
B.fooBar();
|
||||
|
||||
/**
|
||||
* Test for linking to super
|
||||
*/
|
||||
int doElse(int b) {
|
||||
print(b);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for linking to parameter [c]
|
||||
*/
|
||||
void doThis(int c) {
|
||||
print(a);
|
||||
}
|
||||
}
|
||||
|
||||
int testFunc(int a) {
|
||||
}
|
||||
''';
|
||||
|
||||
const String DART_LIBRARY_3 = '''
|
||||
library testLib.bar;
|
||||
import 'temp.dart';
|
||||
|
||||
/*
|
||||
* Normal comment for class C.
|
||||
*/
|
||||
class C {
|
||||
}
|
||||
''';
|
||||
|
||||
Directory TEMP_DIRNAME;
|
||||
|
||||
List writeLibFiles() {
|
||||
TEMP_DIRNAME = Directory.systemTemp.createTempSync('single_library_');
|
||||
var fileName = path.join(TEMP_DIRNAME.path, 'temp.dart');
|
||||
var file = new File(fileName);
|
||||
file.writeAsStringSync(DART_LIBRARY_1);
|
||||
|
||||
var fileName2 = path.join(TEMP_DIRNAME.path, 'temp2.dart');
|
||||
file = new File(fileName2);
|
||||
file.writeAsStringSync(DART_LIBRARY_2);
|
||||
|
||||
var fileName3 = path.join(TEMP_DIRNAME.path, 'temp3.dart');
|
||||
file = new File(fileName3);
|
||||
file.writeAsStringSync(DART_LIBRARY_3);
|
||||
return [new Uri.file(fileName), new Uri.file(fileName3),
|
||||
new Uri.file(fileName3)];
|
||||
}
|
||||
|
||||
main() {
|
||||
group('Generate docs for', () {
|
||||
test('multiple libraries.', () {
|
||||
var files = writeLibFiles();
|
||||
getMirrorSystem(files)
|
||||
.then(expectAsync1((mirrorSystem) {
|
||||
var testLibraryUri = files[0];
|
||||
var library = new Library(mirrorSystem.libraries[testLibraryUri]);
|
||||
|
||||
/// Testing fixReference
|
||||
// Testing Doc comment for class [B].
|
||||
var libraryMirror = mirrorSystem.libraries[testLibraryUri];
|
||||
var classDocComment = library.fixReference('B').children.first.text;
|
||||
expect(classDocComment, 'testLib.B');
|
||||
|
||||
// Test for linking to parameter [c]
|
||||
var importedLib = libraryMirror.libraryDependencies.firstWhere(
|
||||
(dep) => dep.isImport).targetLibrary;
|
||||
var aClassMirror = importedLib.classes.values.first;
|
||||
expect(aClassMirror.qualifiedName, 'testLib2.foo.B');
|
||||
var exportedClass = getDocgenObject(aClassMirror, library);
|
||||
expect(exportedClass is Class, isTrue);
|
||||
|
||||
|
||||
var method = exportedClass.methods['doThis'];
|
||||
expect(method is Method, isTrue);
|
||||
var methodParameterDocComment = method.fixReference(
|
||||
'c').children.first.text;
|
||||
expect(methodParameterDocComment, 'testLib.B.doThis.c');
|
||||
|
||||
|
||||
expect(method.fixReference('A').children.first.text, 'testLib.A');
|
||||
// Testing trying to refer to doThis function
|
||||
expect(method.fixReference('doThis').children.first.text,
|
||||
'testLib.B.doThis');
|
||||
|
||||
// Testing trying to refer to doThis function
|
||||
expect(method.fixReference('doElse').children.first.text,
|
||||
'testLib.B.doElse');
|
||||
|
||||
|
||||
// Test a third library referencing another exported library in a
|
||||
// separate file.
|
||||
importedLib = libraryMirror.libraryDependencies.firstWhere(
|
||||
(dep) => dep.isImport && dep.targetLibrary.qualifiedName ==
|
||||
'testLib.bar').targetLibrary;
|
||||
aClassMirror = importedLib.classes.values.first;
|
||||
expect(aClassMirror.qualifiedName, 'testLib.bar.C');
|
||||
exportedClass = getDocgenObject(aClassMirror, library);
|
||||
expect(exportedClass is Class, isTrue);
|
||||
expect(exportedClass.docName, 'testLib.C');
|
||||
|
||||
methodParameterDocComment = exportedClass.fixReference(
|
||||
'B').children.first.text;
|
||||
expect(methodParameterDocComment, 'testLib.B');
|
||||
|
||||
methodParameterDocComment = exportedClass.fixReference(
|
||||
'testFunc').children.first.text;
|
||||
expect(methodParameterDocComment, 'testLib.testFunc');
|
||||
|
||||
})).whenComplete(() => TEMP_DIRNAME.deleteSync(recursive: true));
|
||||
});
|
||||
});
|
||||
}
|
|
@ -50,33 +50,27 @@ main() {
|
|||
.then(expectAsync1((mirrorSystem) {
|
||||
var testLibraryUri = new Uri(scheme: 'file',
|
||||
path: path.absolute(fileName));
|
||||
var library = generateLibrary(mirrorSystem.libraries[testLibraryUri]);
|
||||
var library = new Library(mirrorSystem.libraries[testLibraryUri]);
|
||||
expect(library is Library, isTrue);
|
||||
|
||||
var classTypes = library.classes;
|
||||
expect(classTypes is ClassGroup, isTrue);
|
||||
|
||||
var classes = [];
|
||||
classes.addAll(classTypes.classes.values);
|
||||
classes.addAll(classTypes.errors.values);
|
||||
classes.addAll(classTypes.values);
|
||||
classes.addAll(library.errors.values);
|
||||
expect(classes.every((e) => e is Class), isTrue);
|
||||
|
||||
expect(classTypes.typedefs.values.every((e) => e is Typedef), isTrue);
|
||||
expect(library.typedefs.values.every((e) => e is Typedef), isTrue);
|
||||
|
||||
var classMethodTypes = [];
|
||||
classes.forEach((e) {
|
||||
classMethodTypes.add(e.methods);
|
||||
classMethodTypes.add(e.inheritedMethods);
|
||||
});
|
||||
expect(classMethodTypes.every((e) => e is MethodGroup), isTrue);
|
||||
expect(classMethodTypes.every((e) => e is Map<String, Method>), isTrue);
|
||||
|
||||
var classMethods = [];
|
||||
classMethodTypes.forEach((e) {
|
||||
classMethods.addAll(e.setters.values);
|
||||
classMethods.addAll(e.getters.values);
|
||||
classMethods.addAll(e.constructors.values);
|
||||
classMethods.addAll(e.operators.values);
|
||||
classMethods.addAll(e.regularMethods.values);
|
||||
classMethods.addAll(e.values);
|
||||
});
|
||||
expect(classMethods.every((e) => e is Method), isTrue);
|
||||
|
||||
|
@ -87,14 +81,10 @@ main() {
|
|||
expect(methodParameters.every((e) => e is Parameter), isTrue);
|
||||
|
||||
var functionTypes = library.functions;
|
||||
expect(functionTypes is MethodGroup, isTrue);
|
||||
expect(functionTypes is Map<String, Method>, isTrue);
|
||||
|
||||
var functions = [];
|
||||
functions.addAll(functionTypes.setters.values);
|
||||
functions.addAll(functionTypes.getters.values);
|
||||
functions.addAll(functionTypes.constructors.values);
|
||||
functions.addAll(functionTypes.operators.values);
|
||||
functions.addAll(functionTypes.regularMethods.values);
|
||||
functions.addAll(functionTypes.values);
|
||||
expect(functions.every((e) => e is Method), isTrue);
|
||||
|
||||
var functionParameters = [];
|
||||
|
@ -110,26 +100,23 @@ main() {
|
|||
// Testing Doc comment for class [A].
|
||||
var libraryMirror = mirrorSystem.libraries[testLibraryUri];
|
||||
var classMirror = libraryMirror.classes.values.first;
|
||||
var classDocComment = fixReference('A', libraryMirror,
|
||||
classMirror, null).children.first.text;
|
||||
expect(classDocComment == 'test.A', isTrue);
|
||||
var classDocComment = library.fixReference('A').children.first.text;
|
||||
expect(classDocComment, 'test.A');
|
||||
|
||||
// Test for linking to parameter [A]
|
||||
var methodMirror = classMirror.methods['doThis'];
|
||||
var methodParameterDocComment = fixReference('A', libraryMirror,
|
||||
classMirror, methodMirror).children.first.text;
|
||||
// TODO(alanknight) : We're not supporting linking to parameters yet
|
||||
// expect(methodParameterDocComment == 'test.A.doThis#A', isTrue);
|
||||
var method = getDocgenObject(classMirror.methods['doThis']);
|
||||
var methodParameterDocComment = method.fixReference(
|
||||
'A').children.first.text;
|
||||
expect(methodParameterDocComment, 'test.A.doThis.A');
|
||||
|
||||
// Testing trying to refer to doThis function
|
||||
var methodDocComment = fixReference('doThis', libraryMirror,
|
||||
classMirror, methodMirror).children.first.text;
|
||||
expect(methodDocComment == 'test.A.doThis', isTrue);
|
||||
var methodDocComment = method.fixReference(
|
||||
'doThis').children.first.text;
|
||||
expect(methodDocComment, 'test.A.doThis');
|
||||
|
||||
// Testing something with no reference
|
||||
var libraryDocComment = fixReference('foobar', libraryMirror,
|
||||
classMirror, methodMirror).text;
|
||||
expect(libraryDocComment == 'foobar', isTrue);
|
||||
var libraryDocComment = method.fixReference('foobar').text;
|
||||
expect(libraryDocComment, 'foobar');
|
||||
})).whenComplete(() => temporaryDir.deleteSync(recursive: true));
|
||||
});
|
||||
});
|
||||
|
|
|
@ -76,6 +76,20 @@
|
|||
* form into the second form automatically, to get the best of both worlds.
|
||||
*/
|
||||
library observe;
|
||||
import 'src/bind_property.dart';
|
||||
import 'src/change_notifier.dart';
|
||||
import 'src/change_record.dart';
|
||||
import 'src/compound_path_observer.dart';
|
||||
import 'src/list_path_observer.dart';
|
||||
import 'src/list_diff.dart';
|
||||
import 'src/metadata.dart';
|
||||
import 'src/observable.dart';
|
||||
import 'src/observable_box.dart';
|
||||
import 'src/observable_list.dart';
|
||||
import 'src/observable_map.dart';
|
||||
import 'src/path_observer.dart';
|
||||
import 'src/to_observable.dart';
|
||||
|
||||
|
||||
export 'src/bind_property.dart';
|
||||
export 'src/change_notifier.dart';
|
||||
|
|
Loading…
Reference in a new issue