Compare commits

...

2 Commits

Author SHA1 Message Date
e2ef4b1c5b fix build for documents 2024-09-28 15:56:22 +03:00
3adadd5bd7 fix build for documents 2024-09-28 15:02:58 +03:00
6 changed files with 35 additions and 19 deletions

View File

@ -1,25 +1,23 @@
plugins { plugins {
id("space.kscience.gradle.mpp") id("space.kscience.gradle.mpp")
application alias(spclibs.plugins.ktor)
} }
val snarkVersion: String by extra
val ktorVersion = space.kscience.gradle.KScienceVersions.ktorVersion
kscience { kscience {
jvm{ jvm{
withJava() withJava()
} }
useContextReceivers() useContextReceivers()
useKtor()
jvmMain { jvmMain {
implementation(projects.snarkKtor) implementation(projects.snarkKtor)
implementation("io.ktor:ktor-server-cio:$ktorVersion") implementation("io.ktor:ktor-server-cio")
implementation(spclibs.logback.classic) implementation(spclibs.logback.classic)
} }
jvmTest{ jvmTest {
implementation("io.ktor:ktor-server-tests:$ktorVersion") implementation("io.ktor:ktor-server-tests")
} }
} }
@ -28,7 +26,7 @@ kotlin {
} }
application { application {
mainClass.set("center.sciprog.snark.documents.Mainkt") mainClass.set("center.sciprog.snark.documents.MainKt")
val isDevelopment: Boolean = project.ext.has("development") val isDevelopment: Boolean = project.ext.has("development")
applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment", "-Xmx200M") applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment", "-Xmx200M")

View File

@ -14,9 +14,7 @@ Curabitur hendrerit hendrerit rutrum. Nullam elementum libero a nisi viverra ali
Paragraph Paragraph
$$ $ \int_a^b {f(x)} = const $
\int_a^b {f(x)} = const
$$
### Section ${section(2)} ### Section ${section(2)}

View File

@ -6,6 +6,7 @@ import io.ktor.server.engine.embeddedServer
import kotlinx.html.ScriptCrossorigin import kotlinx.html.ScriptCrossorigin
import kotlinx.html.link import kotlinx.html.link
import kotlinx.html.script import kotlinx.html.script
import kotlinx.html.unsafe
import space.kscience.snark.html.document.allDocuments import space.kscience.snark.html.document.allDocuments
import space.kscience.snark.ktor.snarkApplication import space.kscience.snark.ktor.snarkApplication
@ -32,6 +33,22 @@ fun Application.renderAllDocuments() = snarkApplication {
crossorigin = ScriptCrossorigin.anonymous crossorigin = ScriptCrossorigin.anonymous
attributes["onload"] = "renderMathInElement(document.body);" attributes["onload"] = "renderMathInElement(document.body);"
} }
script {
unsafe {
+"""
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
delimiters: [
{left: '$$', right: '$$', display: true},
{left: '$', right: '$', display: false},
],
throwOnError : false
});
});
""".trimIndent()
}
}
} }
) )
} }

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@ -1,8 +1,11 @@
package space.kscience.snark.html package space.kscience.snark.html
import kotlinx.css.html
import kotlinx.html.HTML import kotlinx.html.HTML
import kotlinx.html.stream.createHTML import kotlinx.html.dom.append
import kotlinx.html.visitTagAndFinalize import kotlinx.html.dom.document
import kotlinx.html.dom.serialize
import kotlinx.html.html
import space.kscience.dataforge.data.DataSink import space.kscience.dataforge.data.DataSink
import space.kscience.dataforge.data.DataTree import space.kscience.dataforge.data.DataTree
import space.kscience.dataforge.data.wrap import space.kscience.dataforge.data.wrap
@ -15,20 +18,22 @@ public fun interface HtmlPage {
public fun renderPage() public fun renderPage()
public companion object { public companion object {
public fun createHtmlString( public fun createHtmlString(
pageContext: PageContext, pageContext: PageContext,
dataSet: DataTree<*>?, dataSet: DataTree<*>?,
page: HtmlPage, page: HtmlPage,
): String = createHTML().run { ): String = document {
HTML(kotlinx.html.emptyMap, this, null).visitTagAndFinalize(this) { append.html {
with(PageContextWithData(pageContext, dataSet ?: DataTree.EMPTY)) { with(PageContextWithData(pageContext, dataSet ?: DataTree.EMPTY)) {
with(page) { with(page) {
renderPage() renderPage()
} }
} }
} }
} }.serialize(true)
} }
} }

View File

@ -9,11 +9,9 @@ import org.intellij.markdown.ast.findChildOfType
import org.intellij.markdown.ast.getTextInNode import org.intellij.markdown.ast.getTextInNode
import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor
import org.intellij.markdown.flavours.gfm.GFMFlavourDescriptor import org.intellij.markdown.flavours.gfm.GFMFlavourDescriptor
import org.intellij.markdown.flavours.space.SFMFlavourDescriptor
import org.intellij.markdown.html.* import org.intellij.markdown.html.*
import org.intellij.markdown.parser.LinkMap import org.intellij.markdown.parser.LinkMap
import org.intellij.markdown.parser.MarkdownParser import org.intellij.markdown.parser.MarkdownParser
import space.kscience.snark.SnarkReader
private class SnarkInlineLinkGeneratingProvider( private class SnarkInlineLinkGeneratingProvider(
baseURI: URI?, baseURI: URI?,