}
dependencies {
- implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.2")
- implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.2")
- implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.6.2")
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.4")
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.6.4")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.3")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3")
implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.7.5")
- implementation("org.slf4j:slf4j-api:1.7.32")
- implementation("ch.qos.logback:logback-classic:1.2.10")
+ implementation("org.slf4j:slf4j-api:1.7.36")
+ implementation("ch.qos.logback:logback-classic:1.2.11")
}
tasks.withType<KotlinCompile> {
return JsonConfigCodec.decodeFromString(serializer(), json).also { currentConfig = it }
}
- @OptIn(ExperimentalSerializationApi::class)
val JsonConfigCodec = Json {
prettyPrint = true
+ @OptIn(ExperimentalSerializationApi::class)
prettyPrintIndent = "\t"
useAlternativeNames = false
} ?: (null to null)
fun getTableSizeAttributes(width: Int?, height: Int?) = (width?.let { " colspan=\"$it\"" } ?: "") + (height?.let { " rowspan=\"$it\"" } ?: "")
- fun getImageSizeAttributes(width: Int?, height: Int?) = " style=\"" + (width?.let { "width: ${it * 0.025}vmin;" } ?: "") + (height?.let { "height: ${it * 0.025}vmin;" } ?: "") + "\""
+ fun getImageSizeAttributes(width: Int?, height: Int?) = " style=\"" + (width?.let { "width: calc(var(--media-size-unit) * $it);" } ?: "") + (height?.let { "height: calc(var(--media-size-unit) * $it);" } ?: "") + "\""
}
}
fun add(text: String, level: Int, toAnchor: String) {
if (level == 0) {
+ if (title != null)
+ throw IllegalArgumentException("[h1] cannot appear multiple times in an article!")
+
title = text
return
}
levels.add(1)
levels.joinToString(separator = ".") { it.toString() }
} else
- throw IllegalArgumentException("[h${level + 1}] cannot come after [h${levels.size + 1}]!")
+ throw IllegalArgumentException("[h${level + 1}] cannot appear after [h${levels.size + 1}]!")
} else {
levels.addAll(levels.take(level).also { levels.clear() }.mapIndexed { i, n -> if (i == level - 1) n + 1 else n })
levels.joinToString(separator = ".") { it.toString() }
--h2-size: 1.4em;
--h3-size: 1.2em;
+ --media-size-unit: 0.035vw;
+
/***************
* color params *
***************/
--h1-size: 2.6em;
--h2-size: 2.2em;
--h3-size: 1.8em;
+
+ --media-size-unit: 0.025vmin;
}
div#bg {