Skip to content

Commit dc2f5bd

Browse files
committed
Use the 'path.url' Context for everything in Validator
1 parent da9bdaf commit dc2f5bd

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

lib/src/validator.dart

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ class Validator {
3737
: _origin = path.normalize(origin),
3838
_hrefs = _packageGraph.allHrefs;
3939

40+
static path.Context get _urlPath => path.url;
41+
4042
/// Don't call this method more than once, and only after you've
4143
/// generated all docs for the Package.
4244
void validateLinks() {
@@ -51,7 +53,7 @@ class Validator {
5153
}
5254

5355
void _collectLinks(String pathToCheck, [String? source, String? fullPath]) {
54-
fullPath ??= path.join(_origin, pathToCheck);
56+
fullPath ??= _urlPath.join(_origin, pathToCheck);
5557

5658
final pageLinks = _getLinksAndBaseHref(fullPath);
5759
if (pageLinks == null) {
@@ -75,14 +77,14 @@ class Validator {
7577
// the stack without this.
7678
final toVisit = <(String newPathToCheck, String newFullPath)>{};
7779
final pathDirectory = baseHref == null
78-
? path.dirname(pathToCheck)
79-
: '${path.dirname(pathToCheck)}/$baseHref';
80+
? _urlPath.dirname(pathToCheck)
81+
: '${_urlPath.dirname(pathToCheck)}/$baseHref';
8082

8183
for (final href in links) {
8284
final uri = Uri.tryParse(href);
8385
if (uri == null || !uri.hasAuthority && !uri.hasFragment) {
84-
var linkPath = path.normalize(path.url.join(pathDirectory, href));
85-
var newFullPath = path.join(_origin, linkPath);
86+
var linkPath = _urlPath.normalize(_urlPath.join(pathDirectory, href));
87+
var newFullPath = _urlPath.join(_origin, linkPath);
8688
if (!_visited.contains(newFullPath)) {
8789
toVisit.add((linkPath, newFullPath));
8890
_visited.add(newFullPath);
@@ -97,13 +99,13 @@ class Validator {
9799
}
98100

99101
void _checkForOrphans() {
100-
final staticAssets = path.join(_origin, 'static-assets', '');
101-
final indexJson = path.join(_origin, 'index.json');
102+
final staticAssets = _urlPath.join(_origin, 'static-assets', '');
103+
final indexJson = _urlPath.join(_origin, 'index.json');
102104
var foundIndexJson = false;
103105

104106
void checkDirectory(Folder dir) {
105107
for (final child in dir.getChildren()) {
106-
final fullPath = path.normalize(child.path);
108+
final fullPath = _urlPath.normalize(child.path);
107109
if (_visited.contains(fullPath)) {
108110
continue;
109111
}
@@ -114,12 +116,12 @@ class Validator {
114116
if (fullPath.startsWith(staticAssets)) {
115117
continue;
116118
}
117-
if (path.equals(fullPath, indexJson)) {
119+
if (_urlPath.equals(fullPath, indexJson)) {
118120
foundIndexJson = true;
119121
_onCheckProgress.add(fullPath);
120122
continue;
121123
}
122-
final relativeFullPath = path.relative(fullPath, from: _origin);
124+
final relativeFullPath = _urlPath.relative(fullPath, from: _origin);
123125
if (!_writtenFiles.contains(relativeFullPath)) {
124126
// This isn't a file we wrote (this time); don't claim we did.
125127
_warn(PackageWarning.unknownFile, fullPath, _origin);
@@ -144,8 +146,8 @@ class Validator {
144146
}
145147

146148
void _checkSearchIndex() {
147-
final fullPath = path.join(_origin, 'index.json');
148-
final indexPath = path.join(_origin, 'index.html');
149+
final fullPath = _urlPath.join(_origin, 'index.json');
150+
final indexPath = _urlPath.join(_origin, 'index.html');
149151
final file = _config.resourceProvider.getFile(fullPath);
150152
if (!file.exists) {
151153
return;
@@ -160,11 +162,11 @@ class Validator {
160162
found.add(indexPath);
161163
for (var entry in jsonData.cast<Map<String, dynamic>>()) {
162164
if (entry.containsKey('href')) {
163-
var href =
164-
path.joinAll([_origin, ...path.url.split(entry['href'] as String)]);
165+
var href = _urlPath
166+
.joinAll([_origin, ..._urlPath.split(entry['href'] as String)]);
165167
if (path.extension(href).isEmpty) {
166168
// An aliased link to an `index.html` file.
167-
href = path.url.join(href, 'index.html');
169+
href = _urlPath.join(href, 'index.html');
168170
}
169171
if (!_visited.contains(href)) {
170172
_warn(PackageWarning.brokenLink, href, _origin,
@@ -212,8 +214,8 @@ class Validator {
212214
!uri.startsWith('ftp:'))
213215
.map((uri) =>
214216
// An aliased link to an `index.html` file.
215-
path.extension(uri).isEmpty
216-
? path.url.join(uri, 'index.html')
217+
_urlPath.extension(uri).isEmpty
218+
? _urlPath.join(uri, 'index.html')
217219
: uri)
218220
.toSet();
219221
var refreshTag = doc
@@ -239,12 +241,12 @@ class Validator {
239241
final referredFromElements = <Locatable>{};
240242

241243
// Make all paths relative to origin.
242-
if (path.isWithin(origin, warnOn)) {
243-
warnOn = path.relative(warnOn, from: origin);
244+
if (_urlPath.isWithin(origin, warnOn)) {
245+
warnOn = _urlPath.relative(warnOn, from: origin);
244246
}
245247
if (referredFrom != null) {
246-
if (path.isWithin(origin, referredFrom)) {
247-
referredFrom = path.relative(referredFrom, from: origin);
248+
if (_urlPath.isWithin(origin, referredFrom)) {
249+
referredFrom = _urlPath.relative(referredFrom, from: origin);
248250
}
249251
final hrefReferredFrom = _hrefs[referredFrom];
250252
// Source paths are always relative.

0 commit comments

Comments
 (0)