Fetch external link titles from rend attribute – if available
Resolves #27
Change-Id: I547886a3300e5f1c00453ea64b1bab61e21568b4
diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
index a692dec..5a23e7e 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
@@ -4923,11 +4923,15 @@
?.getAttribute("target")?.takeIf { it.isNotBlank() }?.let { metadata["externalLink"] = it }
// Extract textExternalLink from biblNote[@n='url']
- val biblNoteUrl = analytic.firstElement("biblNote") { it.getAttribute("n") == "url" }
- ?.textContent?.trim()?.takeIf { it.isNotEmpty() }
+ val biblNoteElement = analytic.firstElement("biblNote") { it.getAttribute("n") == "url" }
?: monogr.firstElement("biblNote") { it.getAttribute("n") == "url" }
- ?.textContent?.trim()?.takeIf { it.isNotEmpty() }
- metadata.putIfNotBlank("textExternalLink", biblNoteUrl)
+ biblNoteElement?.let {
+ val url = it.textContent?.trim()?.takeIf { it.isNotEmpty() }
+ metadata.putIfNotBlank("textExternalLink", url)
+ // Extract rend attribute as title
+ val rendAttr = it.getAttribute("rend")?.trim()?.takeIf { it.isNotBlank() }
+ metadata.putIfNotBlank("textExternalLinkTitle", rendAttr)
+ }
if (!metadata.containsKey("language")) {
metadata["language"] = "de"
diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt
index f63ec5b..d858858 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt
@@ -214,7 +214,8 @@
}
"textExternalLink" -> {
val url = value.toString()
- val title = textData.headerMetadata["publisher"]?.toString() ?: "Link"
+ val title = textData.headerMetadata["textExternalLinkTitle"]?.toString()
+ ?: textData.headerMetadata["publisher"]?.toString() ?: "Link"
val encodedUrl = url.replace(":", "%3A").replace("/", "%2F")
"type:attachement" to jsonString("data:application/x.korap-link;title=$title,$encodedUrl")
}