package io.github.zadam.triliumsender.services class HtmlConverter { fun convertPlainTextToHtml(s: String): String { val builder = StringBuilder() var previousWasASpace = false for (c in s.toCharArray()) { if (c == ' ') { if (previousWasASpace) { builder.append(" ") previousWasASpace = false continue } previousWasASpace = true } else { previousWasASpace = false } when (c) { '<' -> builder.append("<") '>' -> builder.append(">") '&' -> builder.append("&") '"' -> builder.append(""") '\n' -> builder.append("

") // We need Tab support here, because we print StackTraces as HTML '\t' -> builder.append("     ") else -> if (c.toInt() < 128) { builder.append(c) } else { builder.append("&#").append(c.toInt()).append(";") } } } return builder.toString() } }