Rework quiz rendering
authorLanius Trolling <lanius@laniustrolling.dev>
Thu, 7 Mar 2024 12:51:32 +0000 (07:51 -0500)
committerLanius Trolling <lanius@laniustrolling.dev>
Thu, 7 Mar 2024 12:51:32 +0000 (07:51 -0500)
src/jvmMain/kotlin/info/mechyrdia/Configuration.kt
src/jvmMain/kotlin/info/mechyrdia/lore/parser_tags.kt
src/jvmMain/kotlin/info/mechyrdia/lore/preparser_config.kt

index 7d6ab990577345df9085235aa88967c877342c8e..1de12cdbc4d726874c01877111e32531cd979207 100644 (file)
@@ -17,7 +17,6 @@ data class Configuration(
        val assetDir: String = "$rootDir/assets",
        val templateDir: String = "$rootDir/tpl",
        val jsonDocDir: String = "$rootDir/data",
-       val quizDir: String = "$rootDir/quizzes",
        val scriptDir: String = "$rootDir/funcs",
        
        val dbName: String = "nslore",
index 22806f0c4a7c8af0b8a19f04e70351c9aa0b1916..bdc6af802f7d49f1122c5edd457cc903116807a9 100644 (file)
@@ -209,8 +209,8 @@ enum class TextParserFormattingTag(val type: TextParserTagType<Unit>) {
                        val (width, height) = getSizeParam(tagParam)
                        
                        if (imageUrl.endsWith(".svg"))
-                               File(Configuration.CurrentConfiguration.assetDir)
-                                       .combineSafe("images/$imageUrl")
+                               File(Configuration.CurrentConfiguration.assetDir, "images")
+                                       .combineSafe(imageUrl)
                                        .readText()
                                        .replace("<svg", "<svg${getImageSizeAttributes(width, height)}")
                        else
@@ -236,10 +236,12 @@ enum class TextParserFormattingTag(val type: TextParserTagType<Unit>) {
        ),
        QUIZ(
                TextParserTagType.Indirect(true) { _, content, _ ->
-                       val quizText = File(Configuration.CurrentConfiguration.quizDir).combineSafe("$content.json").readText()
-                       val quizJson = JsonStorageCodec.encodeToString(String.serializer(), quizText)
-                       
-                       "<script>window.renderQuiz(JSON.parse($quizJson));</script>"
+                       if (content.isBlank())
+                               ""
+                       else {
+                               val contentJson = JsonStorageCodec.parseToJsonElement(TextParserState.uncensorText(content))
+                               "<script>window.renderQuiz($contentJson);</script>"
+                       }
                }
        ),
        
index e6c7db1b0c136635a65697ce3fae45abb2d4efd8..07860ed452a51b77f59e9fc370f99d51b790c035 100644 (file)
@@ -60,10 +60,10 @@ object PebbleTemplateLoader : Loader<PebbleTemplateCacheKey> {
        }
        
        override fun resolveRelativePath(relativePath: String, anchorPath: String): String {
-               val templateDir = File(Configuration.CurrentConfiguration.templateDir)
                if ('\n' in anchorPath) // Probably a raw template contents string
                        return relativePath
                
+               val templateDir = File(Configuration.CurrentConfiguration.templateDir)
                return templateDir.combineSafe("$anchorPath/$relativePath").toRelativeString(templateDir)
        }