1
0

HtmlConverter.kt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. package io.github.zadam.triliumsender.services
  2. class HtmlConverter {
  3. fun convertPlainTextToHtml(s: String): String {
  4. val builder = StringBuilder()
  5. var previousWasASpace = false
  6. for (c in s.toCharArray()) {
  7. if (c == ' ') {
  8. if (previousWasASpace) {
  9. builder.append(" ")
  10. previousWasASpace = false
  11. continue
  12. }
  13. previousWasASpace = true
  14. } else {
  15. previousWasASpace = false
  16. }
  17. when (c) {
  18. '<' -> builder.append("&lt;")
  19. '>' -> builder.append("&gt;")
  20. '&' -> builder.append("&amp;")
  21. '"' -> builder.append("&quot;")
  22. '\n' -> builder.append("<p>")
  23. // We need Tab support here, because we print StackTraces as HTML
  24. '\t' -> builder.append("&nbsp; &nbsp; &nbsp;")
  25. else -> if (c.toInt() < 128) {
  26. builder.append(c)
  27. } else {
  28. builder.append("&#").append(c.toInt()).append(";")
  29. }
  30. }
  31. }
  32. return builder.toString()
  33. }
  34. }