1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
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
}
|