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] """$altText""" } } private fun convertImageToHtml(markdown: String): String { val regex = """\!\[(.*?)\]\((.*?)\)""".toRegex() return regex.replace(markdown) { matchResult -> val altText = matchResult.groupValues[1] val imageUrl = matchResult.groupValues[2] """$altText""" } } 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() } } }