summaryrefslogtreecommitdiff
path: root/src/interactive/scala/tools/nsc/interactive/PrettyWriter.scala
diff options
context:
space:
mode:
authorSimon Ochsenreither <simon@ochsenreither.de>2013-06-27 02:34:16 +0200
committerSimon Ochsenreither <simon@ochsenreither.de>2013-06-27 13:43:16 +0200
commit51fe664b29edf21cda7e3cc4e05c78dd1a0a43b7 (patch)
tree5278e233f13d0c306e927720afe9cb9ce0fb7445 /src/interactive/scala/tools/nsc/interactive/PrettyWriter.scala
parent040830d87f7f6ceb2815b9c69f0679ba6b30753d (diff)
downloadscala-51fe664b29edf21cda7e3cc4e05c78dd1a0a43b7.tar.gz
scala-51fe664b29edf21cda7e3cc4e05c78dd1a0a43b7.tar.bz2
scala-51fe664b29edf21cda7e3cc4e05c78dd1a0a43b7.zip
Move some code from s.t.n.io to s.t.n.interactive
The only usages of scala.tools.nsc.io.{Lexer,Pickler,PrettyWriter, Replayer} can be found in scala.tools.nsc.interactive. Let's move those files closer to their dependencies.
Diffstat (limited to 'src/interactive/scala/tools/nsc/interactive/PrettyWriter.scala')
-rw-r--r--src/interactive/scala/tools/nsc/interactive/PrettyWriter.scala41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/interactive/scala/tools/nsc/interactive/PrettyWriter.scala b/src/interactive/scala/tools/nsc/interactive/PrettyWriter.scala
new file mode 100644
index 0000000000..d7dadcc6a8
--- /dev/null
+++ b/src/interactive/scala/tools/nsc/interactive/PrettyWriter.scala
@@ -0,0 +1,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
+}