From c532003c71cc551ce0df797a8d6207c0edb8eaab Mon Sep 17 00:00:00 2001 From: TheOnlyTails Date: Fri, 13 May 2022 16:16:03 +0300 Subject: Render quotes as blockquotes instead of code blocks. (#2496) --- .../src/main/kotlin/renderers/html/HtmlRenderer.kt | 1 + .../pages/comments/DocTagToContentConverter.kt | 10 ++- .../base/src/main/resources/dokka/styles/style.css | 5 +- .../test/kotlin/renderers/html/TextStylesTest.kt | 10 +++ .../transformers/CommentsToContentConverterTest.kt | 81 ++++++++++++---------- 5 files changed, 66 insertions(+), 41 deletions(-) (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 7ce41866..9be7428a 100644 --- a/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt +++ b/plugins/base/src/main/kotlin/renderers/html/HtmlRenderer.kt @@ -128,6 +128,7 @@ open class HtmlRenderer( } node.hasStyle(TextStyle.Paragraph) -> p(additionalClasses) { childrenCallback() } node.hasStyle(TextStyle.Block) -> div(additionalClasses) { childrenCallback() } + node.hasStyle(TextStyle.Quotation) -> blockQuote(additionalClasses) { childrenCallback() } node.isAnchorable -> buildAnchor( node.anchor!!, node.anchorLabel!!, 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 85b082ef..b46a7679 100644 --- a/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt +++ b/plugins/base/src/main/kotlin/transformers/pages/comments/DocTagToContentConverter.kt @@ -123,7 +123,15 @@ open class DocTagToContentConverter : CommentsToContentConverter { styles ) ) - is BlockQuote, is Pre, is CodeBlock -> listOf( + is BlockQuote -> listOf( + ContentGroup( + buildChildren(docTag), + dci, + sourceSets.toDisplaySourceSets(), + styles + TextStyle.Quotation, + ) + ) + is Pre, is CodeBlock -> listOf( ContentCodeBlock( buildChildren(docTag), docTag.params.getOrDefault("lang", ""), diff --git a/plugins/base/src/main/resources/dokka/styles/style.css b/plugins/base/src/main/resources/dokka/styles/style.css index 94200bd1..9bc9f07d 100644 --- a/plugins/base/src/main/resources/dokka/styles/style.css +++ b/plugins/base/src/main/resources/dokka/styles/style.css @@ -612,10 +612,11 @@ a small { } blockquote { - border-left: 1px solid #e5e5e5; + border-left: 1ch solid var(--default-gray); margin: 0; - padding: 0 0 0 20px; + padding-left: 1ch; font-style: italic; + color: var(--average-color); } pre { diff --git a/plugins/base/src/test/kotlin/renderers/html/TextStylesTest.kt b/plugins/base/src/test/kotlin/renderers/html/TextStylesTest.kt index fd2f7860..2c862525 100644 --- a/plugins/base/src/test/kotlin/renderers/html/TextStylesTest.kt +++ b/plugins/base/src/test/kotlin/renderers/html/TextStylesTest.kt @@ -69,6 +69,16 @@ class TextStylesTest : HtmlRenderingOnlyTestBase() { files.contents.getValue("test-page.html").contains(" styled text") } + @Test + fun `should include blockquote`() { + val page = testPage { + group(styles = setOf(TextStyle.Quotation)) { + text("blockquote text") + } + } + HtmlRenderer(context).render(page) + renderedContent.match(BlockQuote("blockquote text")) + } override val renderedContent: Element get() = files.contents.getValue("test-page.html").let { Jsoup.parse(it) }.select("#content").single() diff --git a/plugins/base/src/test/kotlin/transformers/CommentsToContentConverterTest.kt b/plugins/base/src/test/kotlin/transformers/CommentsToContentConverterTest.kt index 9a77172b..07dc0bc7 100644 --- a/plugins/base/src/test/kotlin/transformers/CommentsToContentConverterTest.kt +++ b/plugins/base/src/test/kotlin/transformers/CommentsToContentConverterTest.kt @@ -14,8 +14,8 @@ class CommentsToContentConverterTest { private val converter = DocTagToContentConverter() private fun executeTest( - docTag:DocTag, - match: ContentMatcherBuilder.() -> Unit + docTag: DocTag, + match: ContentMatcherBuilder.() -> Unit, ) { val dci = DCI( setOf( @@ -225,12 +225,16 @@ class CommentsToContentConverterTest { ) executeTest(docTag) { group { - node { - +"Blockquotes are very handy in email to emulate reply text. This line is part of the same quote." + group { + group { + +"Blockquotes are very handy in email to emulate reply text. This line is part of the same quote." + } } group { +"Quote break." } - node { - +"Quote" + group { + group { + +"Quote" + } } } } @@ -261,16 +265,16 @@ class CommentsToContentConverterTest { ) executeTest(docTag) { group { - node { - +"text 1 text 2" - node { - +"text 3 text 4" + group { + group { +"text 1 text 2" } + group { + group { +"text 3 text 4" } } - +"text 5" + group { +"text 5" } } group { +"Quote break." } - node { - +"Quote" + group { + group { +"Quote" } } } } @@ -326,48 +330,49 @@ class CommentsToContentConverterTest { ) ) executeTest(docTag) { - group { link { - +"I'm an inline-style link" - check { - assertEquals( - assertedCast { "Link should be resolved" }.address, - "https://www.google.com" - ) + group { + link { + +"I'm an inline-style link" + check { + assertEquals( + assertedCast { "Link should be resolved" }.address, + "https://www.google.com" + ) + } } - } } + } } } - @Test fun `ordered list`() { val docTag = Ol( - listOf( - Li( - listOf( - P(listOf(Text("test1"))), - P(listOf(Text("test2"))), - ) - ), - Li( - listOf( - P(listOf(Text("test3"))), - P(listOf(Text("test4"))), + listOf( + Li( + listOf( + P(listOf(Text("test1"))), + P(listOf(Text("test2"))), + ) + ), + Li( + listOf( + P(listOf(Text("test3"))), + P(listOf(Text("test4"))), + ) ) ) ) - ) executeTest(docTag) { node { group { - +"test1" - +"test2" + +"test1" + +"test2" } group { - +"test3" - +"test4" + +"test3" + +"test4" } } } -- cgit