Skip to content

Commit 2e30211

Browse files
authored
Strip index.html from external API url (#17112)
Ports this fix from Scaladoc 2. https://github.com/scala/scala/blob/15538c7365bbb03f37d06b59f050241683972c71/src/scaladoc/scala/tools/nsc/doc/Settings.scala#L281-L287 Without it, links to external docs are broken for several libraries.
1 parent 1bf635b commit 2e30211

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

scaladoc/src/dotty/tools/scaladoc/ExternalDocLink.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ object ExternalDocLink:
2525
case Failure(e) => fail(mapping, s"Unable to parse $descr. Exception $e occured")
2626
}
2727

28+
private def stripIndex(url: String): String = url.stripSuffix("index.html").stripSuffix("/") + "/"
29+
2830
def parseLegacy(mapping: String): Either[String, ExternalDocLink] =
2931
mapping.split("#").toList match
3032
case path :: apiUrl :: Nil => for {
31-
url <- tryParse(mapping, "url")(URL(apiUrl))
33+
url <- tryParse(mapping, "url")(URL(stripIndex(apiUrl)))
3234
} yield ExternalDocLink(
3335
List(s"${Regex.quote(path)}.*".r),
3436
url,
@@ -55,7 +57,7 @@ object ExternalDocLink:
5557
case regexStr :: docToolStr :: urlStr :: rest =>
5658
for {
5759
regex <- tryParse(mapping, "regex")(regexStr.r)
58-
url <- tryParse(mapping, "url")(URL(urlStr))
60+
url <- tryParse(mapping, "url")(URL(stripIndex(urlStr)))
5961
doctool <- doctoolByName(docToolStr)
6062
packageList <- parsePackageList(rest)
6163
} yield ExternalDocLink(

0 commit comments

Comments
 (0)