package ani.dantotsu.util
import ani.dantotsu.util.ColorEditor.Companion.toCssColor
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, backGroundColor: Int, textColor: Int): String { val basicHtml = getBasicAniHTML(html) return """ $basicHtml """.trimIndent() } } }