@@ -6,55 +6,63 @@ import scala.collection.mutable
6
6
7
7
object Highlighting {
8
8
9
- implicit def colorToString ( c : Color ): String = c .toString
10
- implicit def cbufToString ( cb : ColorBuffer ): String = cb .toString
9
+ implicit def highlightToString ( h : Highlight ): String = h .toString
10
+ implicit def hbufToString ( hb : HighlightBuffer ): String = hb .toString
11
11
12
- abstract class Color (private val color : String ) {
12
+ abstract class Highlight (private val highlight : String ) {
13
13
def text : String
14
14
15
- override def toString = color + text + Console .RESET
15
+ override def toString = highlight + text + Console .RESET
16
16
17
- def + (other : Color ): ColorBuffer =
18
- new ColorBuffer (this ) + other
17
+ def + (other : Highlight ): HighlightBuffer =
18
+ new HighlightBuffer (this ) + other
19
19
20
- def + (other : String ): ColorBuffer =
21
- new ColorBuffer (this ) + other
20
+ def + (other : String ): HighlightBuffer =
21
+ new HighlightBuffer (this ) + other
22
22
}
23
23
24
- case class ColorBuffer (color : Color ) {
24
+ abstract class Modifier (private val mod : String , text : String ) extends Highlight (Console .RESET ) {
25
+ override def toString =
26
+ mod + super .toString
27
+ }
28
+
29
+ case class HighlightBuffer (hl : Highlight ) {
25
30
val buffer = new mutable.ListBuffer [String ]
26
31
27
- buffer += color .toString
32
+ buffer += hl .toString
28
33
29
- def + (color : Color ): ColorBuffer = {
30
- buffer += color .toString
34
+ def + (other : Highlight ): HighlightBuffer = {
35
+ buffer += other .toString
31
36
this
32
37
}
33
38
34
- def + (str : String ): ColorBuffer = {
35
- buffer += str
39
+ def + (other : String ): HighlightBuffer = {
40
+ buffer += other
36
41
this
37
42
}
38
43
39
44
override def toString =
40
45
buffer.mkString
41
46
}
42
47
43
- case class Red (text : String ) extends Color (Console .RED )
44
- case class Blue (text : String ) extends Color (Console .BLUE )
45
- case class Cyan (text : String ) extends Color (Console .CYAN )
46
- case class Black (text : String ) extends Color (Console .BLACK )
47
- case class Green (text : String ) extends Color (Console .GREEN )
48
- case class White (text : String ) extends Color (Console .WHITE )
49
- case class Yellow (text : String ) extends Color (Console .YELLOW )
50
- case class Magenta (text : String ) extends Color (Console .MAGENTA )
51
-
52
- case class RedB (text : String ) extends Color (Console .RED_B )
53
- case class BlueB (text : String ) extends Color (Console .BLUE_B )
54
- case class CyanB (text : String ) extends Color (Console .CYAN_B )
55
- case class BlackB (text : String ) extends Color (Console .BLACK_B )
56
- case class GreenB (text : String ) extends Color (Console .GREEN_B )
57
- case class WhiteB (text : String ) extends Color (Console .WHITE_B )
58
- case class YellowB (text : String ) extends Color (Console .YELLOW_B )
59
- case class MagentaB (text : String ) extends Color (Console .MAGENTA_B )
48
+ case class Red (text : String ) extends Highlight (Console .RED )
49
+ case class Blue (text : String ) extends Highlight (Console .BLUE )
50
+ case class Cyan (text : String ) extends Highlight (Console .CYAN )
51
+ case class Black (text : String ) extends Highlight (Console .BLACK )
52
+ case class Green (text : String ) extends Highlight (Console .GREEN )
53
+ case class White (text : String ) extends Highlight (Console .WHITE )
54
+ case class Yellow (text : String ) extends Highlight (Console .YELLOW )
55
+ case class Magenta (text : String ) extends Highlight (Console .MAGENTA )
56
+
57
+ case class RedB (text : String ) extends Highlight (Console .RED_B )
58
+ case class BlueB (text : String ) extends Highlight (Console .BLUE_B )
59
+ case class CyanB (text : String ) extends Highlight (Console .CYAN_B )
60
+ case class BlackB (text : String ) extends Highlight (Console .BLACK_B )
61
+ case class GreenB (text : String ) extends Highlight (Console .GREEN_B )
62
+ case class WhiteB (text : String ) extends Highlight (Console .WHITE_B )
63
+ case class YellowB (text : String ) extends Highlight (Console .YELLOW_B )
64
+ case class MagentaB (text : String ) extends Highlight (Console .MAGENTA_B )
65
+
66
+ case class Bold (text : String ) extends Modifier (Console .BOLD , text)
67
+ case class Underlined (text : String ) extends Modifier (Console .UNDERLINED , text)
60
68
}
0 commit comments