From 732f8aac1eb6b2c137fdf81d9d670a30d0f8b9ea Mon Sep 17 00:00:00 2001 From: Andrey Tyrin Date: Wed, 10 Aug 2022 17:43:33 +0300 Subject: Support Var html tag for Javadoc (#2617) Fixes #2358 --- .../src/main/kotlin/renderers/html/HtmlRenderer.kt | 1 + .../pages/comments/DocTagToContentConverter.kt | 1 + .../translators/psi/parsers/JavadocParser.kt | 1 + .../src/test/kotlin/parsers/JavadocParserTest.kt | 32 ++++++++++++++++++++++ .../test/kotlin/renderers/html/TextStylesTest.kt | 12 ++++++++ 5 files changed, 47 insertions(+) (limited to 'plugins/base/src') diff --git a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt index 53645f06..55afef80 100644 --- a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt +++ b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt @@ -777,6 +777,7 @@ open class HtmlRenderer( TextStyle.Italic -> i { body() } TextStyle.Strikethrough -> strike { body() } TextStyle.Strong -> strong { body() } + TextStyle.Var -> htmlVar { body() } is TokenStyle -> span("token " + styleToApply.toString().toLowerCase()) { body() } else -> body() } diff --git a/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt b/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt index b46a7679..1c447e9e 100644 --- a/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt +++ b/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt @@ -254,6 +254,7 @@ open class DocTagToContentConverter : CommentsToContentConverter { extra = extras ) ) + is Var -> buildChildren(docTag, setOf(TextStyle.Var)) else -> buildChildren(docTag) } diff --git a/plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt b/plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt index ce0d2ff3..7dc8e3a0 100644 --- a/plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt +++ b/plugins/base/src/main/kotlin/translators/psi/parsers/JavadocParser.kt @@ -424,6 +424,7 @@ class JavadocParser( "h1" -> ifChildrenPresent { H1(children) } "h2" -> ifChildrenPresent { H2(children) } "h3" -> ifChildrenPresent { H3(children) } + "var" -> ifChildrenPresent { Var(children) } else -> listOf(Text(body = element.ownText())) } } diff --git a/plugins/base/src/test/kotlin/parsers/JavadocParserTest.kt b/plugins/base/src/test/kotlin/parsers/JavadocParserTest.kt index 4f37923b..af8dbb94 100644 --- a/plugins/base/src/test/kotlin/parsers/JavadocParserTest.kt +++ b/plugins/base/src/test/kotlin/parsers/JavadocParserTest.kt @@ -396,4 +396,36 @@ class JavadocParserTest : BaseAbstractTest() { } } } + + @Test + fun `var tag is handled properly`() { + val source = """ + |/src/main/kotlin/test/Test.java + |package example + | + | /** + | * An example of using var tag: variable + | */ + | public class Test {} + """.trimIndent() + testInline( + source, + configuration, + ) { + documentablesCreationStage = { modules -> + val docs = modules.first().packages.first().classlikes.single().documentation.first().value + val root = docs.children.first().root + + kotlin.test.assertEquals( + listOf( + P(children = listOf( + Text("An example of using var tag: "), + Var(children = listOf(Text("variable"))), + )), + ), + root.children + ) + } + } + } } diff --git a/plugins/base/src/test/kotlin/renderers/html/TextStylesTest.kt b/plugins/base/src/test/kotlin/renderers/html/TextStylesTest.kt index 2c862525..98f73ffa 100644 --- a/plugins/base/src/test/kotlin/renderers/html/TextStylesTest.kt +++ b/plugins/base/src/test/kotlin/renderers/html/TextStylesTest.kt @@ -80,6 +80,18 @@ class TextStylesTest : HtmlRenderingOnlyTestBase() { renderedContent.match(BlockQuote("blockquote text")) } + @Test + fun `should include var`() { + val page = testPage { + group(styles = setOf(TextStyle.Var)) { + text("variable") + } + } + HtmlRenderer(context).render(page) + println(renderedContent) + renderedContent.match(Var("variable")) + } + override val renderedContent: Element get() = files.contents.getValue("test-page.html").let { Jsoup.parse(it) }.select("#content").single() } \ No newline at end of file -- cgit