From 32991b7ba8f7dd0a713219b0e4b5c2a43311cbe9 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 23 May 2024 19:06:32 +0900 Subject: [PATCH] btex: serialise now saves original xml --- .../terrarum-sans-bitmap/cjkpunct_variable.tga | 3 +++ .../terrarum-sans-bitmap/currencies_variable.tga | 2 +- .../terrarum-sans-bitmap/sundanese_variable.tga | 2 +- src/net/torvald/btex/BTeXDocument.kt | 16 +++++++++++++++- src/net/torvald/btex/BTeXParser.kt | 3 +++ src/net/torvald/terrarum/tests/BTeXTest.kt | 4 ++-- 6 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 assets/graphics/fonts/terrarum-sans-bitmap/cjkpunct_variable.tga diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/cjkpunct_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/cjkpunct_variable.tga new file mode 100644 index 000000000..3eb21d049 --- /dev/null +++ b/assets/graphics/fonts/terrarum-sans-bitmap/cjkpunct_variable.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:523d141f7a5391543e3898b37607bf5a77ddfc9069970de6e690be85d508987f +size 81938 diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/currencies_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/currencies_variable.tga index f7b3f0fc3..ece8b140a 100644 --- a/assets/graphics/fonts/terrarum-sans-bitmap/currencies_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/currencies_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:571110f6ffd487f094321cc282a95c847e35905233561f05210f8c7ff2bd8a3f +oid sha256:1c0159443a552ba4b53b7fcdd1cda07e46e42ff7b4b52d2ac543414834138149 size 61458 diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/sundanese_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/sundanese_variable.tga index 9703fc04c..2fedfb5d5 100644 --- a/assets/graphics/fonts/terrarum-sans-bitmap/sundanese_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/sundanese_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04804fb9386a09f3631954c60e5f3518e36fece773208ea02b319a26ba1a8c72 +oid sha256:df567cc8b42badebbb47c3c11f71c95579139bb2e26c5306627038674f7cfbd7 size 122898 diff --git a/src/net/torvald/btex/BTeXDocument.kt b/src/net/torvald/btex/BTeXDocument.kt index 9ba07f6cc..e6db5b9b2 100644 --- a/src/net/torvald/btex/BTeXDocument.kt +++ b/src/net/torvald/btex/BTeXDocument.kt @@ -62,6 +62,8 @@ class BTeXDocument : Disposable { val indexTable = HashMap() + internal var inputXML: String? = null + companion object { val DEFAULT_PAGE_BACK = Color(0xe0dfdb_ff.toInt()) // val DEFAULT_PAGE_FORE = Color(0x0a0706_ff) @@ -84,6 +86,9 @@ class BTeXDocument : Disposable { val ra = RandomAccessFile(file, "r") val DOM = ClusteredFormatDOM(ra) + val xml = Clustfile(DOM, "/src.xml") + doc.inputXML = xml.readBytes().toString(Common.CHARSET) + // get meta file val meta = Clustfile(DOM, "/bibliography.json") if (!meta.exists()) throw IllegalStateException("No bibliography.json found on the archive") @@ -126,6 +131,8 @@ class BTeXDocument : Disposable { } } + // TODO read hrefs.json + ra.close() return doc @@ -227,12 +234,19 @@ class BTeXDocument : Disposable { } } - fun serialise(viewer: BTeXDocViewer,archiveFile: File) { + fun serialise(viewer: BTeXDocViewer, archiveFile: File) { if (!isFinalised) throw IllegalStateException("Document must be finalised before being serialised") val diskFile = ClusteredFormatDOM.createNewArchive(archiveFile, Common.CHARSET, "", 0x7FFFF) val DOM = ClusteredFormatDOM(diskFile) + inputXML?.let { xmlstr -> + Clustfile(DOM, "src.xml").also { + it.createNewFile() + it.writeBytes(xmlstr.toByteArray(Common.CHARSET)) + } + } + val json = """ { "title":"${theTitle.escape()}", diff --git a/src/net/torvald/btex/BTeXParser.kt b/src/net/torvald/btex/BTeXParser.kt index 3d990733e..efcb9b69a 100644 --- a/src/net/torvald/btex/BTeXParser.kt +++ b/src/net/torvald/btex/BTeXParser.kt @@ -16,6 +16,7 @@ import net.torvald.terrarum.btex.* import net.torvald.terrarum.btex.BTeXDocument.Companion.DEFAULT_ORNAMENTS_COL import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.serialise.Common import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarumsansbitmap.MovableType import net.torvald.terrarumsansbitmap.TypesettingStrategy @@ -54,6 +55,7 @@ object BTeXParser { it.isValidating = true it.newSAXParser() } + doc.inputXML = file.readText(Common.CHARSET) val stream = FileInputStream(file) val handler = BTeXHandler(doc, varMap, progressIndicator) parser.parse(stream, handler) @@ -67,6 +69,7 @@ object BTeXParser { it.isValidating = true it.newSAXParser() } + doc.inputXML = string val handler = BTeXHandler(doc, varMap, progressIndicator) parser.parse(InputSource(StringReader(string)), handler) return doc to handler diff --git a/src/net/torvald/terrarum/tests/BTeXTest.kt b/src/net/torvald/terrarum/tests/BTeXTest.kt index c37d6459f..53b60efd8 100644 --- a/src/net/torvald/terrarum/tests/BTeXTest.kt +++ b/src/net/torvald/terrarum/tests/BTeXTest.kt @@ -32,13 +32,13 @@ import kotlin.system.measureTimeMillis */ class BTeXTest : ApplicationAdapter() { -// val filePath = "btex.xml" + val filePath = "btex.xml" // val filePath = "btex_ko.xml" // val filePath = "test.xml" // val filePath = "literature/en/daniel_defoe_robinson_crusoe.xml" // val filePath = "literature/ruRU/anton_chekhov_palata_no_6.xml" // val filePath = "literature/koKR/yisang_nalgae.xml" - val filePath = "literature/koKR/yisang_geonchukmuhanyukmyeongakche.xml" +// val filePath = "literature/koKR/yisang_geonchukmuhanyukmyeongakche.xml" private lateinit var document: BTeXDocument