scala.tools.nsc.interactive.PrettyWriter.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scala-compiler Show documentation
Show all versions of scala-compiler Show documentation
Compiler for the SubScript extension of the Scala Programming Language
The newest version!
package scala.tools.nsc.interactive
import java.io.Writer
class PrettyWriter(wr: Writer) extends Writer {
protected val indentStep = " "
private var indent = 0
private def newLine() {
wr.write('\n')
wr.write(indentStep * indent)
}
def close() = wr.close()
def flush() = wr.flush()
def write(str: Array[Char], off: Int, len: Int): Unit = {
if (off < str.length && off < len) {
str(off) match {
case '{' | '[' | '(' =>
indent += 1
wr.write(str(off).toInt)
newLine()
wr.write(str, off + 1, len - 1)
case '}' | ']' | ')' =>
wr.write(str, off, len)
indent -= 1
case ',' =>
wr.write(',')
newLine()
wr.write(str, off + 1, len - 1)
case ':' =>
wr.write(':')
wr.write(' ')
wr.write(str, off + 1, len - 1)
case _ =>
wr.write(str, off, len)
}
} else {
wr.write(str, off, len)
}
}
override def toString = wr.toString
}