SubwayTooter-Android-App/_Emoji/src/main/kotlin/jp/juggler/subwaytooter/emoji/JavaCodeWriter.kt

65 lines
1.1 KiB
Kotlin

package jp.juggler.subwaytooter.emoji
import java.io.*
class JavaCodeWriter(file: File) : AutoCloseable {
companion object {
const val lineFeed = "\u000a"
}
private val writer = OutputStreamWriter(BufferedOutputStream(FileOutputStream(file)), Charsets.UTF_8)
private var linesInFunction = 0
var functionsCount = 0
override fun close() {
writer.flush()
writer.close()
}
fun print(x: String) {
writer.write(x, 0, x.length)
}
fun println(x: String) {
print(x)
print(lineFeed)
writer.flush()
}
fun addCode(code: String) {
// open new function
if (linesInFunction == 0) {
++functionsCount
println("\n\tprivate static void init$functionsCount(EmojiMap e){")
}
// write code
print("\t\t")
println(code)
// close function
if (++linesInFunction > 100) {
println("\t}")
linesInFunction = 0
}
}
fun closeFunction() {
if (linesInFunction > 0) {
println("\t}")
linesInFunction = 0
}
}
fun writeDefinition(s: String) {
println("\t$s")
println("")
}
}