From 302126067d6b05b26c7f2fffe7fda5d058b32b33 Mon Sep 17 00:00:00 2001 From: Felix Mulder Date: Tue, 3 Jan 2017 16:23:56 +0100 Subject: Add markdown parsing to dottydoc --- doc-tool/test/DottyDocTest.scala | 1 + doc-tool/test/MarkdownTests.scala | 247 +++++++++++++++++++++++++++++++++++++ doc-tool/test/SimpleComments.scala | 1 - 3 files changed, 248 insertions(+), 1 deletion(-) create mode 100644 doc-tool/test/MarkdownTests.scala (limited to 'doc-tool/test') diff --git a/doc-tool/test/DottyDocTest.scala b/doc-tool/test/DottyDocTest.scala index 67e468f9a..3f22ec8ec 100644 --- a/doc-tool/test/DottyDocTest.scala +++ b/doc-tool/test/DottyDocTest.scala @@ -20,6 +20,7 @@ trait DottyDocTest { ctx.setSetting(ctx.settings.language, List("Scala2")) ctx.setSetting(ctx.settings.YkeepComments, true) ctx.setSetting(ctx.settings.YnoInline, true) + ctx.setSetting(ctx.settings.wikiSyntax, true) ctx.setProperty(ContextDoc, new ContextDottydoc) ctx.setSetting( ctx.settings.classpath, diff --git a/doc-tool/test/MarkdownTests.scala b/doc-tool/test/MarkdownTests.scala new file mode 100644 index 000000000..e8596b634 --- /dev/null +++ b/doc-tool/test/MarkdownTests.scala @@ -0,0 +1,247 @@ +package dotty.tools +package dottydoc + +import org.junit.Test +import org.junit.Assert._ + +import dotc.core.Contexts.{ Context, ContextBase, FreshContext } +import dotc.core.Comments.{ ContextDoc, ContextDocstrings } +import dottydoc.core.ContextDottydoc + +class MarkdownTests extends DottyDocTest { + override implicit val ctx: FreshContext = { + // TODO: check if can reuse parent instead of copy-paste + val base = new ContextBase + import base.settings._ + val ctx = base.initialCtx.fresh + ctx.setSetting(ctx.settings.language, List("Scala2")) + ctx.setSetting(ctx.settings.YkeepComments, true) + ctx.setSetting(ctx.settings.YnoInline, true) + // No wiki syntax! + ctx.setSetting(ctx.settings.wikiSyntax, false) + ctx.setProperty(ContextDoc, new ContextDottydoc) + ctx.setSetting( + ctx.settings.classpath, + "../library/target/scala-2.11/dotty-library_2.11-0.1-SNAPSHOT.jar" + ) + base.initialize()(ctx) + ctx + } + + @Test def simpleMarkdown = { + val source = + """ + |package scala + | + |/** *Hello*, world! */ + |trait HelloWorld + """.stripMargin + + checkSource(source) { packages => + val traitCmt = + packages("scala") + .children.find(_.path.mkString(".") == "scala.HelloWorld") + .flatMap(_.comment.map(_.body)) + .get + .trim + + assertEquals("

Hello, world!

", traitCmt) + } + } + + @Test def outerLink = { + val source = + """ + |package scala + | + |/** [out](http://www.google.com) */ + |trait HelloWorld + """.stripMargin + + checkSource(source) { packages => + val traitCmt = + packages("scala") + .children.find(_.path.mkString(".") == "scala.HelloWorld") + .flatMap(_.comment.map(_.body)) + .get + .trim + + assertEquals("""

out

""", traitCmt) + } + } + + @Test def relativeLink = { + val source = + """ + |package scala + | + |/** [None](./None.html) */ + |trait HelloWorld + | + |trait None + """.stripMargin + + checkSource(source) { packages => + val traitCmt = + packages("scala") + .children.find(_.path.mkString(".") == "scala.HelloWorld") + .flatMap(_.comment.map(_.body)) + .get + .trim + + assertEquals("""

None

""", traitCmt) + } + } + + @Test def absoluteLink = { + val source = + """ + |package scala + | + |/** [None](scala.None) */ + |trait HelloWorld + | + |trait None + """.stripMargin + + checkSource(source) { packages => + val traitCmt = + packages("scala") + .children.find(_.path.mkString(".") == "scala.HelloWorld") + .flatMap(_.comment.map(_.body)) + .get + .trim + + assertEquals("""

None

""", traitCmt) + } + } + + @Test def handleLists = { + val source = + """ + |package scala + | + |/** - Item1 + | * - Item2 + | * - Item3 + | */ + |trait HelloWorld + | + |trait None + """.stripMargin + + checkSource(source) { packages => + val traitCmt = + packages("scala") + .children.find(_.path.mkString(".") == "scala.HelloWorld") + .flatMap(_.comment.map(_.body)) + .get + .trim + + assertEquals( + """|""".stripMargin, traitCmt) + } + } + + @Test def handleNestedLists = { + val source = + """ + |package scala + | + |/** - Item1 + | * - Item1a + | * - Item1b + | * - Item2 + | * - Item3 + | */ + |trait HelloWorld + | + |trait None + """.stripMargin + + checkSource(source) { packages => + val traitCmt = + packages("scala") + .children.find(_.path.mkString(".") == "scala.HelloWorld") + .flatMap(_.comment.map(_.body)) + .get + .trim + + assertEquals( + """|""".stripMargin, traitCmt) + } + } + + @Test def handleCodeBlock = { + val source = + """ + |package scala + | + |/** ```scala + | * val x = 1 + 5 + | * ``` + | */ + |trait HelloWorld + | + |trait None + """.stripMargin + + checkSource(source) { packages => + val traitCmt = + packages("scala") + .children.find(_.path.mkString(".") == "scala.HelloWorld") + .flatMap(_.comment.map(_.body)) + .get + .trim + + assertEquals( + """|
val x = 1 + 5
+             |
""".stripMargin, traitCmt) + } + } + + @Test def handleCodeBlockJavaDocstring = { + // the following works, but not when the start of the codeblock is on the + // first line + val source = + """ + |package scala + | + |/** + | * ```scala + | * val x = 1 + 5 + | * ``` + | */ + |trait HelloWorld + | + |trait None + """.stripMargin + + checkSource(source) { packages => + val traitCmt = + packages("scala") + .children.find(_.path.mkString(".") == "scala.HelloWorld") + .flatMap(_.comment.map(_.body)) + .get + .trim + println(traitCmt) + + assertEquals( + """|
val x = 1 + 5
+             |
""".stripMargin, traitCmt) + } + } +} diff --git a/doc-tool/test/SimpleComments.scala b/doc-tool/test/SimpleComments.scala index eb9abca22..bc420feeb 100644 --- a/doc-tool/test/SimpleComments.scala +++ b/doc-tool/test/SimpleComments.scala @@ -25,5 +25,4 @@ class TestSimpleComments extends DottyDocTest { assertEquals(traitCmt, "

Hello, world!

") } } - } -- cgit v1.2.3