diff options
author | Martin Odersky <odersky@gmail.com> | 2012-07-31 15:47:05 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2012-07-31 15:47:05 +0200 |
commit | 217aaf7497990cf5cd23bca2bb57b5b6ea708873 (patch) | |
tree | 1a65a90c324a6fe5d5fe5ab7678f345117e85acb /src/library | |
parent | f4693871f4aad1fdbdbb743feaed8a848a9e2dca (diff) | |
download | scala-217aaf7497990cf5cd23bca2bb57b5b6ea708873.tar.gz scala-217aaf7497990cf5cd23bca2bb57b5b6ea708873.tar.bz2 scala-217aaf7497990cf5cd23bca2bb57b5b6ea708873.zip |
Made worksheet output wrap around after custimizable # of output columns.
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/runtime/WorksheetSupport.scala | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/library/scala/runtime/WorksheetSupport.scala b/src/library/scala/runtime/WorksheetSupport.scala index db6d6359a3..f9ffb9197b 100644 --- a/src/library/scala/runtime/WorksheetSupport.scala +++ b/src/library/scala/runtime/WorksheetSupport.scala @@ -14,9 +14,11 @@ object WorksheetSupport { * By default it is 30ms. */ private class FlushedOutputStream(out: OutputStream) extends OutputStream { + protected def flushInterval = 30000000L // interval between flushes, by default 30ms + protected def width = 80 // output width, by default 80 characters + protected def tabInc = 8 // tab increment, by default 8 characters private var lastFlush: Long = 0L - protected val flushInterval = 30000000L // 30ms - private var lastCh: Int = '\n' + private var col = 0 override def write(b: Array[Byte], off: Int, len: Int) = { for (idx <- off until (off + len min b.length)) writeOne(b(idx)) flush() @@ -33,14 +35,16 @@ object WorksheetSupport { } } def writeOne(c: Int) { - if (lastCh == '\n') { - lastCh = 0 + if (col == 0) write((currentOffset+" ").getBytes) - } out.write(c) - lastCh = c + col = + if (c == '\n') 0 + else if (c == '\t') (col / tabInc) * tabInc + tabInc + else col + 1 + if (col >= width) writeOne('\n') } - def ensureNewLine() = if (lastCh != '\n') writeOne('\n') + def ensureNewLine() = if (col != 0) writeOne('\n') } private val flushedOut = new FlushedOutputStream(System.out) |