@@ -11,24 +11,31 @@ import TastyUnpickler._
1111import util .Spans .offsetToInt
1212import printing .Highlighting ._
1313
14- class TastyPrinter (bytes : Array [Byte ])(using Context ) {
14+ object TastyPrinter :
15+ def show (bytes : Array [Byte ])(using Context ): String =
16+ val printer =
17+ if ctx.settings.color.value == " never" then new TastyPrinter (bytes)
18+ else new TastyAnsiiPrinter (bytes)
19+ printer.showContents()
20+
21+ class TastyPrinter (bytes : Array [Byte ]) {
1522
1623 private val sb : StringBuilder = new StringBuilder
1724
18- val unpickler : TastyUnpickler = new TastyUnpickler (bytes)
25+ private val unpickler : TastyUnpickler = new TastyUnpickler (bytes)
1926 import unpickler .{nameAtRef , unpickle }
2027
21- def nameToString (name : Name ): String = name.debugString
28+ private def nameToString (name : Name ): String = name.debugString
2229
23- def nameRefToString (ref : NameRef ): String = nameToString(nameAtRef(ref))
30+ private def nameRefToString (ref : NameRef ): String = nameToString(nameAtRef(ref))
2431
25- def printNames (): Unit =
32+ private def printNames (): Unit =
2633 for ((name, idx) <- nameAtRef.contents.zipWithIndex) {
27- val index = nameColor (" %4d" .format(idx))
34+ val index = nameStr (" %4d" .format(idx))
2835 sb.append(index).append(" : " ).append(nameToString(name)).append(" \n " )
2936 }
3037
31- def printContents (): String = {
38+ def showContents (): String = {
3239 sb.append(" Names:\n " )
3340 printNames()
3441 sb.append(" \n " )
@@ -59,13 +66,13 @@ class TastyPrinter(bytes: Array[Byte])(using Context) {
5966 import reader ._
6067 var indent = 0
6168 def newLine () = {
62- val length = treeColor (" %5d" .format(index(currentAddr) - index(startAddr)))
69+ val length = treeStr (" %5d" .format(index(currentAddr) - index(startAddr)))
6370 sb.append(s " \n $length: " + " " * indent)
6471 }
65- def printNat () = sb.append(treeColor (" " + readNat()))
72+ def printNat () = sb.append(treeStr (" " + readNat()))
6673 def printName () = {
6774 val idx = readNat()
68- sb.append(nameColor (" " + idx + " [" + nameRefToString(NameRef (idx)) + " ]" ))
75+ sb.append(nameStr (" " + idx + " [" + nameRefToString(NameRef (idx)) + " ]" ))
6976 }
7077 def printTree (): Unit = {
7178 newLine()
@@ -74,7 +81,7 @@ class TastyPrinter(bytes: Array[Byte])(using Context) {
7481 indent += 2
7582 if (tag >= firstLengthTreeTag) {
7683 val len = readNat()
77- sb.append(s " ( ${lengthColor (len.toString)}) " )
84+ sb.append(s " ( ${lengthStr (len.toString)}) " )
7885 val end = currentAddr + len
7986 def printTrees () = until(end)(printTree())
8087 tag match {
@@ -116,7 +123,7 @@ class TastyPrinter(bytes: Array[Byte])(using Context) {
116123 }
117124 indent -= 2
118125 }
119- sb.append(i " start = ${reader.startAddr}, base = $base, current = $currentAddr, end = $endAddr\n " )
126+ sb.append(s " start = ${reader.startAddr}, base = $base, current = $currentAddr, end = $endAddr\n " )
120127 sb.append(s " ${endAddr.index - startAddr.index} bytes of AST, base = $currentAddr\n " )
121128 while (! isAtEnd) {
122129 printTree()
@@ -136,7 +143,7 @@ class TastyPrinter(bytes: Array[Byte])(using Context) {
136143 sb.append(s " position bytes: \n " )
137144 val sorted = spans.toSeq.sortBy(_._1.index)
138145 for ((addr, pos) <- sorted) {
139- sb.append(treeColor (" %10d" .format(addr.index)))
146+ sb.append(treeStr (" %10d" .format(addr.index)))
140147 sb.append(s " : ${offsetToInt(pos.start)} .. ${pos.end}\n " )
141148 }
142149 sb.result
@@ -153,14 +160,14 @@ class TastyPrinter(bytes: Array[Byte])(using Context) {
153160 sb.append(s " comment bytes: \n " )
154161 val sorted = comments.toSeq.sortBy(_._1.index)
155162 for ((addr, cmt) <- sorted) {
156- sb.append(treeColor (" %10d" .format(addr.index)))
163+ sb.append(treeStr (" %10d" .format(addr.index)))
157164 sb.append(s " : ${cmt.raw} (expanded = ${cmt.isExpanded}) \n " )
158165 }
159166 sb.result
160167 }
161168 }
162169
163- protected def nameColor (str : String ): String = Magenta ( str).show
164- protected def treeColor (str : String ): String = Yellow ( str).show
165- protected def lengthColor (str : String ): String = Cyan ( str).show
170+ protected def nameStr (str : String ): String = str
171+ protected def treeStr (str : String ): String = str
172+ protected def lengthStr (str : String ): String = str
166173}
0 commit comments