package ani.dantotsu.util
import ani.dantotsu.util.ColorEditor.Companion.toCssColor
import ani.dantotsu.util.ColorEditor.Companion.toHexColor
class AniMarkdown { //istg anilist has the worst api
companion object {
private fun convertNestedImageToHtml(markdown: String): String {
val regex = """\[!\[(.*?)]\((.*?)\)]\((.*?)\)""".toRegex()
return regex.replace(markdown) { matchResult ->
val altText = matchResult.groupValues[1]
val imageUrl = matchResult.groupValues[2]
val linkUrl = matchResult.groupValues[3]
""""""
}
}
private fun convertImageToHtml(markdown: String): String {
val regex = """!\[(.*?)]\((.*?)\)""".toRegex()
return regex.replace(markdown) { matchResult ->
val altText = matchResult.groupValues[1]
val imageUrl = matchResult.groupValues[2]
"""
"""
}
}
private fun convertLinkToHtml(markdown: String): String {
val regex = """\[(.*?)]\((.*?)\)""".toRegex()
return regex.replace(markdown) { matchResult ->
val linkText = matchResult.groupValues[1]
val linkUrl = matchResult.groupValues[2]
"""$linkText"""
}
}
private fun replaceLeftovers(html: String): String {
return html.replace(" ", " ")
.replace("&", "&")
.replace("<", "<")
.replace(">", ">")
.replace(""", "\"")
.replace("'", "'")
.replace("
", "")
.replace("`", "")
.replace("~", "")
.replace(">\n<", "><")
.replace("\n", "
")
}
private fun underlineToHtml(html: String): String {
return html.replace("(?s)___(.*?)___".toRegex(), "
$1
")
.replace("(?s)__(.*?)__".toRegex(), "
$1
")
.replace("(?s)\\s+_([^_]+)_\\s+".toRegex(), "$1")
}
fun getBasicAniHTML(html: String): String {
val step0 = convertNestedImageToHtml(html)
val step1 = convertImageToHtml(step0)
val step2 = convertLinkToHtml(step1)
val step3 = replaceLeftovers(step2)
return underlineToHtml(step3)
}
fun getFullAniHTML(html: String, textColor: Int): String {
val basicHtml = getBasicAniHTML(html)
val returnHtml = """
$basicHtml
""".trimIndent()
return returnHtml
}
}
}