diff --git a/scala3doc-testcases/src/tests/htmlTests.scala b/scala3doc-testcases/src/tests/htmlTests.scala new file mode 100644 index 000000000000..0132f217c197 --- /dev/null +++ b/scala3doc-testcases/src/tests/htmlTests.scala @@ -0,0 +1,29 @@ +package tests +package htmlTests + + +/**
ASD | + *FGH | + *JKL | + *
---|---|---|
123 | + *456 | + *789 | + *
+ * def someScalaCode(x: String) = println("Hello " + x)
+ *
+ *
+*/
+class HtmlTest
\ No newline at end of file
diff --git a/scala3doc/src/dotty/dokka/tasty/comments/MarkdownConverter.scala b/scala3doc/src/dotty/dokka/tasty/comments/MarkdownConverter.scala
index 66b6a70a7565..a705a60eae51 100644
--- a/scala3doc/src/dotty/dokka/tasty/comments/MarkdownConverter.scala
+++ b/scala3doc/src/dotty/dokka/tasty/comments/MarkdownConverter.scala
@@ -161,8 +161,17 @@ class MarkdownConverter(val repr: Repr) extends BaseConverter {
case _: mda.SoftLineBreak => emit(dkkd.Br.INSTANCE)
+ case inline: mda.HtmlInline =>
+ emit(dkkd.Html(List(dkk.text(inline.getSegments.mkString)).asJava, kt.emptyMap))
+
+ case entity: mda.HtmlEntity =>
+ emit(dkkd.Html(List(dkk.text(entity.getSegments.mkString)).asJava, kt.emptyMap))
+
+ case block: mda.HtmlBlock =>
+ emit(dkkd.Html(List(dkk.text(block.getContentChars.toString)).asJava, kt.emptyMap))
+
// TODO (https://github.com/lampepfl/scala3doc/issues/205): for now just silent the warnigs
- case _:mda.HtmlInline | _: mda.LinkRef | _: mda.HtmlEntity | _: mda.HtmlBlock | _: com.vladsch.flexmark.ext.emoji.Emoji =>
+ case _: mda.LinkRef | _: com.vladsch.flexmark.ext.emoji.Emoji =>
emit(dkk.text(MarkdownParser.renderToText(n)))
case _ =>
diff --git a/scala3doc/src/dotty/dokka/tasty/comments/MarkdownParser.scala b/scala3doc/src/dotty/dokka/tasty/comments/MarkdownParser.scala
index 92915a86910d..024c3c3f5f80 100644
--- a/scala3doc/src/dotty/dokka/tasty/comments/MarkdownParser.scala
+++ b/scala3doc/src/dotty/dokka/tasty/comments/MarkdownParser.scala
@@ -1,6 +1,7 @@
package dotty.dokka.tasty.comments
import java.util.{ Arrays }
+import Regexes._
import com.vladsch.flexmark.util.{ast => mdu}
import com.vladsch.flexmark.formatter.Formatter
@@ -36,11 +37,13 @@ object MarkdownParser {
"https://github.global.ssl.fastly.net/images/icons/emoji/")
.set(WikiLinkExtension.LINK_ESCAPE_CHARS, "")
+ val parser = Parser.builder(markdownOptions).build()
+
val RENDERER = Formatter.builder(markdownOptions).build()
def parseToMarkdown(text: String): mdu.Document =
- Parser.builder(markdownOptions)
- .build.parse(text).asInstanceOf[mdu.Document]
+ // We need to remove safe tag markers as they break flexmark parsing
+ parser.parse(text.replace(safeTagMarker.toString, "")).asInstanceOf[mdu.Document]
def renderToText(node: mdu.Node): String =
diff --git a/scala3doc/src/dotty/renderers/ScalaHtmlRenderer.scala b/scala3doc/src/dotty/renderers/ScalaHtmlRenderer.scala
index acac28b06a4f..76ae2cb06ceb 100644
--- a/scala3doc/src/dotty/renderers/ScalaHtmlRenderer.scala
+++ b/scala3doc/src/dotty/renderers/ScalaHtmlRenderer.scala
@@ -97,7 +97,8 @@ class ScalaHtmlRenderer(using ctx: DokkaContext) extends HtmlRenderer(ctx) {
override def buildContentNode(f: FlowContent, node: ContentNode, pageContext: ContentPage, sourceSetRestriciton: JSet[DisplaySourceSet]) = {
node match {
- case n: HtmlContentNode => withHtml(f, raw(n.body).toString)
+ case n: HtmlContentNode =>
+ withHtml(f, raw(n.body).toString)
case n: HierarchyGraphContentNode => buildDiagram(f, n.diagram, pageContext)
case n: DocumentableList =>
val ss = if sourceSetRestriciton == null then Set.empty.asJava else sourceSetRestriciton