Skip to content

Commit 449b13e

Browse files
committed
Merge pull request #1093 from keertip/embedder
add support for _embedder.yaml file
2 parents 6b5a994 + 4005ddb commit 449b13e

File tree

12 files changed

+172
-11
lines changed

12 files changed

+172
-11
lines changed

lib/dartdoc.dart

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'dart:io';
1010

1111
import 'package:analyzer/file_system/file_system.dart' as fileSystem;
1212
import 'package:analyzer/file_system/physical_file_system.dart';
13+
import 'package:analyzer/source/embedder.dart';
1314
import 'package:analyzer/source/package_map_provider.dart';
1415
import 'package:analyzer/source/package_map_resolver.dart';
1516
import 'package:analyzer/source/pub_package_map_provider.dart';
@@ -128,7 +129,7 @@ class DartDoc {
128129
List<LibraryElement> _parseLibraries(List<String> files) {
129130
Set<LibraryElement> libraries = new Set();
130131
DartSdk sdk = new DirectoryBasedDartSdk(new JavaFile(sdkDir.path));
131-
List<UriResolver> resolvers = [new DartUriResolver(sdk)];
132+
List<UriResolver> resolvers = [];
132133

133134
fileSystem.Resource cwd =
134135
PhysicalResourceProvider.INSTANCE.getResource(rootDir.path);
@@ -141,6 +142,20 @@ class DartDoc {
141142
resolvers.add(new SdkExtUriResolver(packageMap));
142143
resolvers.add(new PackageMapUriResolver(
143144
PhysicalResourceProvider.INSTANCE, packageMap));
145+
146+
EmbedderUriResolver embedderUriResolver = new EmbedderUriResolver(
147+
new EmbedderYamlLocator(packageMap).embedderYamls);
148+
if (embedderUriResolver.length == 0) {
149+
// The embedder uri resolver has no mappings. Use the default Dart SDK
150+
// uri resolver.
151+
resolvers.add(new DartUriResolver(sdk));
152+
} else {
153+
// The embedder uri resolver has mappings, use it instead of the default
154+
// Dart SDK uri resolver.
155+
resolvers.add(embedderUriResolver);
156+
}
157+
} else {
158+
resolvers.add(new DartUriResolver(sdk));
144159
}
145160
resolvers.add(new FileUriResolver());
146161

pubspec.lock

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
# See http://pub.dartlang.org/doc/glossary.html#lockfile
33
packages:
44
analyzer:
5-
description: analyzer
5+
description:
6+
name: analyzer
7+
url: "https://pub.dartlang.org"
68
source: hosted
7-
version: "0.27.1+2"
9+
version: "0.27.2"
810
ansicolor:
911
description: ansicolor
1012
source: hosted

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ homepage: https://github.com/dart-lang/dartdoc
77
environment:
88
sdk: '>=1.14.0 <2.0.0'
99
dependencies:
10-
analyzer: '>=0.27.0 <0.28.0'
10+
analyzer: '>=0.27.2 <0.28.0'
1111
args: ^0.13.0
1212
cli_util: ^0.0.1
1313
collection: ^1.2.0

test/dartdoc_test.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,22 @@ void main() {
9999
expect(p.libraries, hasLength(7));
100100
expect(p.libraries.map((lib) => lib.name).contains('fake'), isFalse);
101101
});
102+
103+
test('generate docs for package with embedder yaml', () async {
104+
PackageMeta meta = new PackageMeta.fromDir(testPackageWithEmbedderYaml);
105+
DartDoc dartdoc = new DartDoc(
106+
testPackageWithEmbedderYaml, [], getSdkDir(), [], tempDir, meta, []);
107+
108+
DartDocResults results = await dartdoc.generateDocs();
109+
expect(results.package, isNotNull);
110+
111+
Package p = results.package;
112+
expect(p.name, 'test_package_embedder_yaml');
113+
expect(p.hasDocumentationFile, isFalse);
114+
expect(p.libraries, hasLength(3));
115+
expect(p.libraries.map((lib) => lib.name).contains('dart:core'), isTrue);
116+
expect(p.libraries.map((lib) => lib.name).contains('dart:async'), isTrue);
117+
expect(p.libraries.map((lib) => lib.name).contains('grizzly'), isTrue);
118+
});
102119
});
103120
}

test/src/utils.dart

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@ import 'package:dartdoc/src/model.dart';
1717
import 'package:dartdoc/src/package_meta.dart';
1818
import 'package:path/path.dart' as p;
1919

20-
final Directory testPackageDir = new Directory('test_package');
21-
final Directory testPackageBadDir = new Directory('test_package_bad');
22-
final Directory testPackageWithNoReadme = new Directory('test_package_small');
23-
24-
DartSdk sdkDir;
2520
AnalyzerHelper analyzerHelper;
21+
DartSdk sdkDir;
2622
Package testPackage;
23+
final Directory testPackageBadDir = new Directory('test_package_bad');
24+
25+
final Directory testPackageDir = new Directory('test_package');
2726
Package testPackageSmall;
27+
final Directory testPackageWithEmbedderYaml =
28+
new Directory('test_package_embedder_yaml');
29+
final Directory testPackageWithNoReadme = new Directory('test_package_small');
2830

2931
void delete(Directory dir) {
3032
if (dir.existsSync()) dir.deleteSync(recursive: true);

test_package_docs/fake/Color-class.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ <h2>Constants</h2>
185185
<span class="signature">&#8594; <a href="fake/Color-class.html">Color</a></span>
186186
</dt>
187187
<dd>
188-
<p></p>
188+
<p>Orange</p>
189189
<div>
190190
<span class="signature"><code>const Color(2)</code></span>
191191
</div>
@@ -195,7 +195,7 @@ <h2>Constants</h2>
195195
<span class="signature">&#8594; <a href="fake/Color-class.html">Color</a></span>
196196
</dt>
197197
<dd>
198-
<p></p>
198+
<p>Red</p>
199199
<div>
200200
<span class="signature"><code>const Color(1)</code></span>
201201
</div>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
embedder_libs:
2+
"dart:bear": "grizzly.dart"
3+
"dart:core": "core.dart"
4+
"dart:async": "async.dart"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
library dart.async;
6+
7+
abstract class Future<T> {}
8+
9+
abstract class Stream<T> {}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
library dart.core;
6+
7+
external bool identical(Object a, Object b);
8+
9+
void print(Object object) {}
10+
11+
class bool extends Object {}
12+
13+
abstract class Comparable<T> {
14+
int compareTo(T other);
15+
}
16+
17+
class DateTime extends Object {}
18+
19+
class double extends num {}
20+
21+
class Function {}
22+
23+
abstract class int extends num {
24+
bool get isEven => false;
25+
int operator -();
26+
external static int parse(String source,
27+
{int radix, int onError(String source)});
28+
}
29+
30+
abstract class Iterable<E> {
31+
bool get isEmpty;
32+
Iterator<E> get iterator;
33+
}
34+
35+
class Iterator<E> {
36+
E get current;
37+
bool moveNext();
38+
}
39+
40+
abstract class List<E> implements Iterable<E> {
41+
Iterator<E> get iterator => null;
42+
E operator [](int index);
43+
void operator []=(int index, E value);
44+
void add(E value);
45+
void clear();
46+
}
47+
48+
abstract class Map<K, V> extends Object {
49+
Iterable<K> get keys;
50+
bool containsKey(Object key);
51+
}
52+
53+
class Null extends Object {}
54+
55+
abstract class num implements Comparable<num> {
56+
num operator %(num other);
57+
num operator *(num other);
58+
num operator +(num other);
59+
num operator -(num other);
60+
num operator /(num other);
61+
bool operator <(num other);
62+
bool operator <=(num other);
63+
bool operator >(num other);
64+
bool operator >=(num other);
65+
num abs();
66+
int round();
67+
int toInt();
68+
}
69+
70+
class Object {
71+
int get hashCode => 0;
72+
bool operator ==(other) => identical(this, other);
73+
String toString() => 'a string';
74+
}
75+
76+
class StackTrace {}
77+
78+
abstract class String implements Comparable<String> {
79+
external factory String.fromCharCodes(Iterable<int> charCodes,
80+
[int start = 0, int end]);
81+
List<int> get codeUnits;
82+
bool get isEmpty => false;
83+
bool get isNotEmpty => false;
84+
int get length => 0;
85+
String toUpperCase();
86+
}
87+
88+
class Symbol {}
89+
90+
class Type {}
91+
92+
class Uri {
93+
static List<int> parseIPv6Address(String host, [int start = 0, int end]) {
94+
int parseHex(int start, int end) {
95+
return 0;
96+
}
97+
return null;
98+
}
99+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
library grizzly;
6+
7+
class Bear {}

0 commit comments

Comments
 (0)