From 4d14eeea3a537e6a9a04d8bb168b1b93d32e5096 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 6 May 2024 21:59:26 +0900 Subject: [PATCH] parser now validates XML --- lib/TerrarumSansBitmap.jar | 4 ++-- src/net/torvald/btex/BTeXParser.kt | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/TerrarumSansBitmap.jar b/lib/TerrarumSansBitmap.jar index ff8eea689..aee3be830 100644 --- a/lib/TerrarumSansBitmap.jar +++ b/lib/TerrarumSansBitmap.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d7628239f9cd19d2d4e24cb13813eb0eb894117cd8e11a4dbd1aee07a9cfc91 -size 200225 +oid sha256:c7426e6af31750d5bde79dadaff0109513bda29e12aa6c552721ac44d1529ccb +size 200165 diff --git a/src/net/torvald/btex/BTeXParser.kt b/src/net/torvald/btex/BTeXParser.kt index 9c2ea4305..21abe5ad5 100644 --- a/src/net/torvald/btex/BTeXParser.kt +++ b/src/net/torvald/btex/BTeXParser.kt @@ -47,7 +47,11 @@ object BTeXParser { operator fun invoke(file: File, varMap: Map): Pair { val doc = BTeXDocument() - val parser = SAXParserFactory.newDefaultInstance().newSAXParser() + val parser = SAXParserFactory.newInstance().let { + it.isNamespaceAware = true + it.isValidating = true + it.newSAXParser() + } val stream = FileInputStream(file) val handler = BTeXHandler(doc, varMap) parser.parse(stream, handler) @@ -56,7 +60,11 @@ object BTeXParser { operator fun invoke(string: String, varMap: Map): Pair { val doc = BTeXDocument() - val parser = SAXParserFactory.newDefaultInstance().newSAXParser() + val parser = SAXParserFactory.newInstance().let { + it.isNamespaceAware = true + it.isValidating = true + it.newSAXParser() + } val handler = BTeXHandler(doc, varMap) parser.parse(InputSource(StringReader(string)), handler) return doc to handler @@ -119,6 +127,8 @@ object BTeXParser { private val bodyTextShadowAlpha = 0.36f + + private fun StringBuilder.appendObjectPlaceholder(id: String) { (objWidthDict[id] ?: throw NullPointerException("No OBJ with id '$id' exists")).let { this.append(objectMarkerWithWidth(id, it)) @@ -307,7 +317,7 @@ object BTeXParser { String(ch.sliceArray(start until start + length)).replace('\n', ' ').replace(Regex(" +"), " ")//.trim() if (str.isNotEmpty()) { - printdbg("Characters [col:${spanColour}] \t\"$str\"") +// printdbg("Characters [col:${spanColour}] \t\"$str\"") // process span request if (spanColour != oldSpanColour || spanColour != null) {