ariane/app/src/main/java/oppen/ariane/io/gemini/GemtextHelper.kt

38 lines
1011 B
Kotlin
Raw Normal View History

package oppen.ariane.io.gemini
2020-08-17 17:42:23 +00:00
import java.lang.StringBuilder
object GemtextHelper {
2020-09-03 20:27:09 +00:00
/**
*
* This is safe for most cases but fails when a line starts with ``` _within_ a code block
*
*/
2020-08-17 17:42:23 +00:00
fun findCodeBlocks(source: List<String>): List<String>{
val sb = StringBuilder()
var inCodeBlock = false
val parsed = mutableListOf<String>()
source.forEach { line ->
2020-09-03 20:27:09 +00:00
if (line.startsWith("```")) {
2020-08-17 17:42:23 +00:00
if (!inCodeBlock) {
//New code block starting
sb.clear()
sb.append("```")
} else {
//End of code block
parsed.add(sb.toString())
}
inCodeBlock = !inCodeBlock
} else {
if (inCodeBlock) {
sb.append("$line\n")
} else {
parsed.add(line)
}
}
}
return parsed
}
}