diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2017-01-03 16:23:56 +0100 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2017-01-31 14:29:15 +0100 |
commit | 302126067d6b05b26c7f2fffe7fda5d058b32b33 (patch) | |
tree | cd086eefe7d53186179f5cacb75511b01418fc85 /doc-tool/test | |
parent | d2bf0b1443c094dba2e86d839bb8a1b8b9336eae (diff) | |
download | dotty-302126067d6b05b26c7f2fffe7fda5d058b32b33.tar.gz dotty-302126067d6b05b26c7f2fffe7fda5d058b32b33.tar.bz2 dotty-302126067d6b05b26c7f2fffe7fda5d058b32b33.zip |
Add markdown parsing to dottydoc
Diffstat (limited to 'doc-tool/test')
-rw-r--r-- | doc-tool/test/DottyDocTest.scala | 1 | ||||
-rw-r--r-- | doc-tool/test/MarkdownTests.scala | 247 | ||||
-rw-r--r-- | doc-tool/test/SimpleComments.scala | 1 |
3 files changed, 248 insertions, 1 deletions
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("<p><em>Hello</em>, world!</p>", 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("""<p><a href="http://www.google.com">out</a></p>""", 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("""<p><a href="./None.html">None</a></p>""", 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("""<p><a href="../scala/None.html">None</a></p>""", 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( + """|<ul> + |<li>Item1</li> + |<li>Item2</li> + |<li>Item3</li> + |</ul>""".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( + """|<ul> + |<li>Item1 + |<ul> + |<li>Item1a</li> + |<li>Item1b</li> + |</ul> + |</li> + |<li>Item2</li> + |<li>Item3</li> + |</ul>""".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( + """|<pre><code class="language-scala">val x = 1 + 5 + |</code></pre>""".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( + """|<pre><code class="language-scala">val x = 1 + 5 + |</code></pre>""".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, "<p>Hello, world!</p>") } } - } |