Skip to content

Commit 9cb0de6

Browse files
authored
Backport "Fix: Validation for API link" to LTS (#18980)
Backports #17099 to the LTS branch. PR submitted by the release tooling. [skip ci]
2 parents f849976 + 4349516 commit 9cb0de6

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

scaladoc/src/dotty/tools/scaladoc/renderers/SiteRenderer.scala

+9-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,15 @@ trait SiteRenderer(using DocContext) extends Locations:
3030
def siteContent(pageDri: DRI, content: ResolvedTemplate): PageContent =
3131
import content.ctx
3232
def tryAsDri(str: String): Option[String] =
33-
val (path, prefix) = str match
33+
val newStr =
34+
str.dropWhile(c => c == '.' || c == '/').replaceAll("/", ".") match
35+
case str if str.endsWith("$.html") => str.stripSuffix("$.html")
36+
case str if str.endsWith(".html") => str.stripSuffix(".html")
37+
case _ => str
38+
39+
val (path, prefix) = newStr match
3440
case HashRegex(path, prefix) => (path, prefix)
35-
case _ => (str, "")
41+
case _ => (newStr, "")
3642

3743
val res = ctx.driForLink(content.template.file, path).filter(driExists)
3844
res.headOption.map(pathToPage(pageDri, _) + prefix)
@@ -49,7 +55,7 @@ trait SiteRenderer(using DocContext) extends Locations:
4955

5056
/* Link resolving checks performs multiple strategies with following priority:
5157
1. We check if the link is a valid URL e.g. http://dotty.epfl.ch
52-
2. We check if the link leads to other static site
58+
2. We check if the link leads to other static site or API pages, example: [[exemple.scala.Foo]] || [Foo](../exemple/scala/Foo.html)
5359
3. We check if the link leads to existing asset e.g. images/logo.svg -> <static-site-root>/_assets/images/logo.svg
5460
*/
5561

0 commit comments

Comments
 (0)