diff options
-rw-r--r-- | src/Formats/HtmlFormatService.kt | 4 | ||||
-rw-r--r-- | src/Formats/MarkdownFormatService.kt | 2 | ||||
-rw-r--r-- | src/Formats/StructuredFormatService.kt | 15 | ||||
-rw-r--r-- | test/data/format/classWithClassObject.html | 44 | ||||
-rw-r--r-- | test/data/format/classWithClassObject.md | 29 | ||||
-rw-r--r-- | test/src/TestAPI.kt | 7 | ||||
-rw-r--r-- | test/src/format/HtmlFormatTest.kt | 15 | ||||
-rw-r--r-- | test/src/format/MarkdownFormatTest.kt | 4 |
8 files changed, 79 insertions, 41 deletions
diff --git a/src/Formats/HtmlFormatService.kt b/src/Formats/HtmlFormatService.kt index 48291b48..b23e4a45 100644 --- a/src/Formats/HtmlFormatService.kt +++ b/src/Formats/HtmlFormatService.kt @@ -35,7 +35,7 @@ public open class HtmlFormatService(locationService: LocationService, to.appendln("<h$level>${text}</h$level>") } - override fun appendText(to: StringBuilder, text: String) { + override fun appendParagraph(to: StringBuilder, text: String) { to.appendln("<p>${text}</p>") } @@ -94,7 +94,7 @@ public open class HtmlFormatService(locationService: LocationService, } override fun formatCode(code: String): String { - return "<code>${code.htmlEscape()}</code>" + return "<code>${code}</code>" } override fun formatList(text: String): String { diff --git a/src/Formats/MarkdownFormatService.kt b/src/Formats/MarkdownFormatService.kt index 9849c674..96f64eec 100644 --- a/src/Formats/MarkdownFormatService.kt +++ b/src/Formats/MarkdownFormatService.kt @@ -62,7 +62,7 @@ public open class MarkdownFormatService(locationService: LocationService, to.appendln(text) } - override public fun appendText(to: StringBuilder, text: String) { + override public fun appendParagraph(to: StringBuilder, text: String) { to.appendln() to.appendln(text) to.appendln() diff --git a/src/Formats/StructuredFormatService.kt b/src/Formats/StructuredFormatService.kt index 60d5b7f1..2131d65d 100644 --- a/src/Formats/StructuredFormatService.kt +++ b/src/Formats/StructuredFormatService.kt @@ -10,7 +10,7 @@ public abstract class StructuredFormatService(val locationService: LocationServi abstract public fun appendBlockCode(to: StringBuilder, line: String) abstract public fun appendBlockCode(to: StringBuilder, lines: Iterable<String>) abstract public fun appendHeader(to: StringBuilder, text: String, level: Int = 1) - abstract public fun appendText(to: StringBuilder, text: String) + abstract public fun appendParagraph(to: StringBuilder, text: String) abstract public fun appendLine(to: StringBuilder, text: String) public abstract fun appendLine(to: StringBuilder) @@ -41,7 +41,7 @@ public abstract class StructuredFormatService(val locationService: LocationServi open fun formatText(location: Location, content: ContentNode): String { return StringBuilder { when (content) { - is ContentText -> append(content.text) + is ContentText -> append(formatText(content.text)) is ContentSymbol -> append(formatSymbol(content.text)) is ContentKeyword -> append(formatKeyword(content.text)) is ContentIdentifier -> append(formatIdentifier(content.text)) @@ -61,7 +61,7 @@ public abstract class StructuredFormatService(val locationService: LocationServi append(formatLink(linkText, content.href)) } is ContentParagraph -> { - appendText(this, formatText(location, content.children)) + appendParagraph(this, formatText(location, content.children)) } is ContentBlockCode -> { appendBlockCode(this, formatText(location, content.children)) @@ -143,17 +143,20 @@ public abstract class StructuredFormatService(val locationService: LocationServi for ((memberLocation, members) in membersMap) { appendTableRow(to) { appendTableCell(to) { - appendText(to, formatLink(memberLocation)) + to.append(formatLink(memberLocation)) } appendTableCell(to) { val breakdownBySummary = members.groupBy { formatText(location, it.summary) } for ((summary, items) in breakdownBySummary) { for (signature in items) { - appendBlockCode(to, formatText(location, languageService.render(signature))) + val signature = languageService.render(signature) + val signatureAsCode = ContentCode() + signatureAsCode.append(signature) + to.append(formatText(location, signatureAsCode)) } if (!summary.isEmpty()) { - appendText(to, summary) + to.append(summary) } } } diff --git a/test/data/format/classWithClassObject.html b/test/data/format/classWithClassObject.html new file mode 100644 index 00000000..79546418 --- /dev/null +++ b/test/data/format/classWithClassObject.html @@ -0,0 +1,44 @@ +<HTML> +<HEAD> +</HEAD> +<BODY> +<a href="out.html">test</a> / <a href="out.html"></a> / <a href="out.html">Klass</a><br/> +<br/> +<h1>Klass</h1> +<pre><code><span class="keyword">class </span><span class="identifier">Klass</span></code></pre><br/> +<br/> +<h3>Constructors</h3> +<table> +<tbody> +<tr> +<td> +<a href="out.html"><init></a></td> +<td> +<code><span class="keyword">public</span> <span class="identifier">Klass</span><span class="symbol">(</span><span class="symbol">)</span></code></td> +</tr> +</tbody> +</table> +<h3>Class Object Properties</h3> +<table> +<tbody> +<tr> +<td> +<a href="out.html">x</a></td> +<td> +<code><span class="keyword">val </span><span class="identifier">x</span><span class="symbol">: </span><span class="identifier">Int</span></code></td> +</tr> +</tbody> +</table> +<h3>Class Object Functions</h3> +<table> +<tbody> +<tr> +<td> +<a href="out.html">foo</a></td> +<td> +<code><span class="keyword">fun </span><span class="identifier">foo</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></code></td> +</tr> +</tbody> +</table> +</BODY> +</HTML> diff --git a/test/data/format/classWithClassObject.md b/test/data/format/classWithClassObject.md index 10cac365..f694a76f 100644 --- a/test/data/format/classWithClassObject.md +++ b/test/data/format/classWithClassObject.md @@ -14,40 +14,17 @@ class Klass ### Constructors -| -[<init>](out.md) - - | -``` -public Klass() -``` - - | +| [<init>](out.md) | `public Klass()` | ### Class Object Properties -| -[x](out.md) - - | -``` -val x: Int -``` - - | +| [x](out.md) | `val x: Int` | ### Class Object Functions -| -[foo](out.md) - - | -``` -fun foo(): Unit -``` +| [foo](out.md) | `fun foo(): Unit` | - | diff --git a/test/src/TestAPI.kt b/test/src/TestAPI.kt index 6f4e34c2..cc09f001 100644 --- a/test/src/TestAPI.kt +++ b/test/src/TestAPI.kt @@ -51,13 +51,12 @@ public fun verifyModel(vararg files: String, verifier: (DocumentationModule) -> Disposer.dispose(environment) } -public fun verifyOutput(path: String, outputGenerator: (DocumentationModule, StringBuilder) -> Unit) { +public fun verifyOutput(path: String, outputExtension: String, outputGenerator: (DocumentationModule, StringBuilder) -> Unit) { verifyModel(path) { val output = StringBuilder() outputGenerator(it, output) - val trimmedOutput = output.toString().split('\n').map { it.trimTrailing() }.join("\n") - val expectedOutput = File(path.replace(".kt", ".md")).readText() - assertEquals(expectedOutput.trimTrailing(), trimmedOutput) + val expectedOutput = File(path.replace(".kt", outputExtension)).readText() + assertEquals(expectedOutput, output.toString()) } } diff --git a/test/src/format/HtmlFormatTest.kt b/test/src/format/HtmlFormatTest.kt new file mode 100644 index 00000000..758c6e7b --- /dev/null +++ b/test/src/format/HtmlFormatTest.kt @@ -0,0 +1,15 @@ +package org.jetbrains.dokka.tests + +import org.jetbrains.dokka.KotlinLanguageService +import org.junit.Test +import org.jetbrains.dokka.HtmlFormatService + +public class HtmlFormatTest { + private val htmlService = HtmlFormatService(InMemoryLocationService, KotlinLanguageService()) + + Test fun classWithClassObject() { + verifyOutput("test/data/format/classWithClassObject.kt", ".html") { model, output -> + htmlService.appendNodes(tempLocation, output, model.members.single().members) + } + } +} diff --git a/test/src/format/MarkdownFormatTest.kt b/test/src/format/MarkdownFormatTest.kt index ea501c53..5cdfb8b5 100644 --- a/test/src/format/MarkdownFormatTest.kt +++ b/test/src/format/MarkdownFormatTest.kt @@ -9,13 +9,13 @@ public class MarkdownFormatTest { private val markdownService = MarkdownFormatService(InMemoryLocationService, KotlinLanguageService()) Test fun emptyDescription() { - verifyOutput("test/data/format/emptyDescription.kt") { model, output -> + verifyOutput("test/data/format/emptyDescription.kt", ".md") { model, output -> markdownService.appendNodes(tempLocation, output, model.members.single().members) } } Test fun classWithClassObject() { - verifyOutput("test/data/format/classWithClassObject.kt") { model, output -> + verifyOutput("test/data/format/classWithClassObject.kt", ".md") { model, output -> markdownService.appendNodes(tempLocation, output, model.members.single().members) } } |