@@ -245,20 +245,32 @@ class ScalaHtmlRenderer(ctx: DokkaContext, args: Args) extends HtmlRenderer(ctx)
245
245
).toString()
246
246
)
247
247
248
+ private val HashRegex = " ([^#]+)(#.+)" .r
249
+
248
250
override def buildPageContent (context : FlowContent , page : ContentPage ): Unit =
249
251
page match
250
252
case s : StaticPageNode if ! s.hasFrame() =>
251
253
case _ => buildNavigation(context, page)
252
254
253
255
page.getContent match
254
256
case prc : PartiallyRenderedContent =>
257
+ def tryAsDri (str : String ) =
258
+ val (path, prefix) = str match
259
+ case HashRegex (path, prefix) => (path, prefix)
260
+ case _ => (str, " " )
261
+
262
+ // TODO (https://github.com/lampepfl/scala3doc/issues/238) proper warnings about unresolved links
263
+ prc.context.driForLink(prc.template.templateFile, path)
264
+ .flatMap(dri => Option (getLocationProvider.resolve(dri, sourceSets, page)))
265
+ .map(_ + prefix)
266
+ .getOrElse {
267
+ println(s " [WARN] ${prc.template.file}: Unable to resolve link ' $str' " )
268
+ str
269
+ }
270
+
255
271
def processLocalLink (str : String ): String =
256
- Try (URL (str)).map(_ => str).getOrElse{
257
- // TODO (https://github.com/lampepfl/scala3doc/issues/238) error handling
258
- prc.context.driForLink(prc.template.templateFile, str)
259
- .flatMap(dri => Option (getLocationProvider.resolve(dri, sourceSets, page)))
260
- .getOrElse(str)
261
- }
272
+ if str.startsWith(" #" ) || str.isEmpty then str
273
+ else Try (URL (str)).map(_ => str).getOrElse(tryAsDri(str))
262
274
263
275
val html = prc.procsesHtml(processLocalLink, resolveLink(page))
264
276
withHtml(context, html)
0 commit comments