From 62da832db1c48718eb9f9559ffbfca1e41c9a721 Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Wed, 21 Dec 2022 23:25:32 +0300 Subject: [PATCH] Make text processor work on initial text, not on processed one. --- gradle.properties | 2 +- snark-html/build.gradle.kts | 4 ++-- .../space/kscience/snark/html/SnarkTextParser.kt | 16 +++++++--------- .../space/kscience/snark/html/TextProcessor.kt | 2 +- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7773a91..2dfbcb3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ kotlin.code.style=official -toolsVersion=0.12.1-kotlin-1.7.20-Beta \ No newline at end of file +toolsVersion=0.13.1-kotlin-1.7.20 \ No newline at end of file diff --git a/snark-html/build.gradle.kts b/snark-html/build.gradle.kts index 1de2df6..46d0fb7 100644 --- a/snark-html/build.gradle.kts +++ b/snark-html/build.gradle.kts @@ -9,13 +9,13 @@ val ktorVersion = space.kscience.gradle.KScienceVersions.ktorVersion dependencies { api(projects.snarkCore) - api("org.jetbrains.kotlinx:kotlinx-html:0.7.5") + api("org.jetbrains.kotlinx:kotlinx-html:0.8.0") api("org.jetbrains.kotlin-wrappers:kotlin-css") api("io.ktor:ktor-utils:$ktorVersion") api("space.kscience:dataforge-io-yaml:$dataforgeVersion") - api("org.jetbrains:markdown:0.3.1") + api("org.jetbrains:markdown:0.3.5") } readme { diff --git a/snark-html/src/main/kotlin/space/kscience/snark/html/SnarkTextParser.kt b/snark-html/src/main/kotlin/space/kscience/snark/html/SnarkTextParser.kt index b99ed52..f03dc41 100644 --- a/snark-html/src/main/kotlin/space/kscience/snark/html/SnarkTextParser.kt +++ b/snark-html/src/main/kotlin/space/kscience/snark/html/SnarkTextParser.kt @@ -48,16 +48,14 @@ internal object SnarkMarkdownParser : SnarkTextParser() { private val markdownFlavor = CommonMarkFlavourDescriptor() private val markdownParser = MarkdownParser(markdownFlavor) - override fun parseText(text: String, meta: Meta): HtmlFragment { - val parsedTree = markdownParser.buildMarkdownTreeFromString(text) - val htmlString = HtmlGenerator(text, parsedTree, markdownFlavor).generateHtml() + override fun parseText(text: String, meta: Meta): HtmlFragment = HtmlFragment { page -> + val transformedText = SnarkHtmlParser.transformText(text, meta, page) + val parsedTree = markdownParser.buildMarkdownTreeFromString(transformedText) + val htmlString = HtmlGenerator(transformedText, parsedTree, markdownFlavor).generateHtml() - return HtmlFragment { page -> - - div { - unsafe { - +SnarkHtmlParser.transformText(htmlString, meta, page) - } + div { + unsafe { + +htmlString } } } diff --git a/snark-html/src/main/kotlin/space/kscience/snark/html/TextProcessor.kt b/snark-html/src/main/kotlin/space/kscience/snark/html/TextProcessor.kt index cb67866..b058627 100644 --- a/snark-html/src/main/kotlin/space/kscience/snark/html/TextProcessor.kt +++ b/snark-html/src/main/kotlin/space/kscience/snark/html/TextProcessor.kt @@ -29,7 +29,7 @@ public fun interface TextProcessor { */ public object BasicTextProcessor : TextProcessor { - private val regex = """\$\{([\w.]*)(?>\("([\w.]*)"\))?}""".toRegex() + private val regex = """\$\{([\w.]*)(?>\("(.*)"\))?}""".toRegex() context(WebPage) override fun process(text: String): String = text.replace(regex) { match -> when (match.groups[1]!!.value) {