Skip to content

Commit 2d9eb1c

Browse files
authored
Fix: Validation for API link (#17099)
In this PR: I change the regular path from `../exception/scala/Foo.html` to `exception.scala.Foo` to use the DRI resolver function. ## Context: I have a Hello World project with a `Foo` class and a `Foo2` object within a package `exception.scala` <img width="225" alt="Screenshot 2023-06-07 at 12 45 47" src="https://github.com/lampepfl/dotty/assets/44496264/1d155f81-5910-44b4-be0c-b495cd75e597"> ### Example 1 (No warning): <img width="500" alt="Screenshot 2023-06-07 at 15 38 07" src="https://github.com/lampepfl/dotty/assets/44496264/cf341967-8743-480a-9f35-7c27ed78a691"> ### Result: <img width="800" alt="Screenshot 2023-06-07 at 12 50 13" src="https://github.com/lampepfl/dotty/assets/44496264/ccea1646-3501-4ad2-b9d0-ee5d8bbac969"> As you can see, as expected there is no warning for these links. ### Example 2 (Warnings): <img width="500" alt="Screenshot 2023-06-07 at 15 41 00" src="https://github.com/lampepfl/dotty/assets/44496264/9309a851-24d6-472e-839e-444c0dc58bb6"> ### Result: <img width="800" alt="Screenshot 2023-06-07 at 15 41 13" src="https://github.com/lampepfl/dotty/assets/44496264/1b8986f9-d06c-4eda-9599-e4f2cc0343f7"> Fixes: #16695
1 parent 229dc12 commit 2d9eb1c

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

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

Lines changed: 9 additions & 3 deletions
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)