aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/repl/ammonite/Ansi.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-04-28 11:01:33 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-04-29 10:42:02 +0200
commit29fc55a67349145cbb23edf3f0fc0307bf9d515e (patch)
tree64165416302e5f9f9c89f27e844e8b67c06e9061 /src/dotty/tools/dotc/repl/ammonite/Ansi.scala
parent4fadce464b2ecf0d35f1d6ff00283d6ada2ff0be (diff)
downloaddotty-29fc55a67349145cbb23edf3f0fc0307bf9d515e.tar.gz
dotty-29fc55a67349145cbb23edf3f0fc0307bf9d515e.tar.bz2
dotty-29fc55a67349145cbb23edf3f0fc0307bf9d515e.zip
Add Ammonite's MIT license
Diffstat (limited to 'src/dotty/tools/dotc/repl/ammonite/Ansi.scala')
-rw-r--r--src/dotty/tools/dotc/repl/ammonite/Ansi.scala39
1 files changed, 14 insertions, 25 deletions
diff --git a/src/dotty/tools/dotc/repl/ammonite/Ansi.scala b/src/dotty/tools/dotc/repl/ammonite/Ansi.scala
index 3cd2fc26c..37c4de7b5 100644
--- a/src/dotty/tools/dotc/repl/ammonite/Ansi.scala
+++ b/src/dotty/tools/dotc/repl/ammonite/Ansi.scala
@@ -18,6 +18,7 @@ object Ansi {
def matches(state: Short) = (state & resetMask) == applyMask
def apply(s: Ansi.Str) = s.overlay(this, 0, s.length)
}
+
object Attr {
val Reset = new Attr(Some(Console.RESET), Short.MaxValue, 0)
@@ -38,7 +39,7 @@ object Ansi {
* Represents a set of [[Ansi.Attr]]s all occupying the same bit-space
* in the state `Short`
*/
- sealed abstract class Category(){
+ sealed abstract class Category() {
val mask: Int
val all: Seq[Attr]
lazy val bitsMap = all.map{ m => m.applyMask -> m}.toMap
@@ -47,7 +48,7 @@ object Ansi {
}
}
- object Color extends Category{
+ object Color extends Category {
val mask = 15 << 7
val Reset = makeAttr(Some("\u001b[39m"), 0 << 7)
@@ -66,7 +67,7 @@ object Ansi {
)
}
- object Back extends Category{
+ object Back extends Category {
val mask = 15 << 3
val Reset = makeAttr(Some("\u001b[49m"), 0 << 3)
@@ -84,20 +85,22 @@ object Ansi {
Blue, Magenta, Cyan, White
)
}
- object Bold extends Category{
+
+ object Bold extends Category {
val mask = 1 << 0
val On = makeAttr(Some(Console.BOLD), 1 << 0)
val Off = makeAttr(None , 0 << 0)
val all = Seq(On, Off)
}
- object Underlined extends Category{
+ object Underlined extends Category {
val mask = 1 << 1
val On = makeAttr(Some(Console.UNDERLINED), 1 << 1)
val Off = makeAttr(None, 0 << 1)
val all = Seq(On, Off)
}
- object Reversed extends Category{
+
+ object Reversed extends Category {
val mask = 1 << 2
val On = makeAttr(Some(Console.REVERSED), 1 << 2)
val Off = makeAttr(None, 0 << 2)
@@ -105,22 +108,14 @@ object Ansi {
}
val hardOffMask = Bold.mask | Underlined.mask | Reversed.mask
- val categories = Vector(
- Color,
- Back,
- Bold,
- Underlined,
- Reversed
- )
+ val categories = List(Color, Back, Bold, Underlined, Reversed)
object Str {
-
- lazy val ansiRegex = "\u001B\\[[;\\d]*m".r
+ @sharable lazy val ansiRegex = "\u001B\\[[;\\d]*m".r
implicit def parse(raw: CharSequence): Str = {
- // This will
- val chars = new Array[Char](raw.length)
- val colors = new Array[Short](raw.length)
+ val chars = new Array[Char](raw.length)
+ val colors = new Array[Short](raw.length)
var currentIndex = 0
var currentColor = 0.toShort
@@ -147,7 +142,6 @@ object Ansi {
Str(chars.take(currentIndex), colors.take(currentIndex))
}
-
}
/**
@@ -187,6 +181,7 @@ object Ansi {
val (leftColors, rightColors) = colors.splitAt(index)
(new Str(leftChars, leftColors), new Str(rightChars, rightColors))
}
+
def length = chars.length
override def toString = render
@@ -238,12 +233,9 @@ object Ansi {
// Cap off the left-hand-side of the rendered string with any ansi escape
// codes necessary to rest the state to 0
emitDiff(0)
-
output.toString
}
-
-
/**
* Overlays the desired color over the specified range of the [[Ansi.Str]].
*/
@@ -260,8 +252,5 @@ object Ansi {
}
new Str(chars, colorsOut)
}
-
}
-
-
}