|
@@ -3,6 +3,7 @@ package door
|
|
|
import (
|
|
|
"bytes"
|
|
|
"log"
|
|
|
+ "strings"
|
|
|
"unicode"
|
|
|
)
|
|
|
|
|
@@ -175,6 +176,41 @@ func (l *Line) Output() []byte {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+func RenderUppercase(Upper string, NonUpper string) ColorRender {
|
|
|
+ var UpperColor, NonUpperColor []byte
|
|
|
+ if strings.HasPrefix(Upper, "\x1b") {
|
|
|
+ UpperColor = []byte(Upper)
|
|
|
+ } else {
|
|
|
+ UpperColor = []byte(ColorText(Upper))
|
|
|
+ }
|
|
|
+ if strings.HasPrefix(NonUpper, "\x1b") {
|
|
|
+ NonUpperColor = []byte(NonUpper)
|
|
|
+ } else {
|
|
|
+ NonUpperColor = []byte(ColorText(NonUpper))
|
|
|
+ }
|
|
|
+
|
|
|
+ return func(output *bytes.Buffer, text []byte) []byte {
|
|
|
+ var lastColor *[]byte
|
|
|
+ output.Reset()
|
|
|
+ for _, letter := range text {
|
|
|
+ if unicode.IsUpper(rune(letter)) {
|
|
|
+ if lastColor != &UpperColor {
|
|
|
+ output.Write(UpperColor)
|
|
|
+ lastColor = &UpperColor
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if lastColor != &NonUpperColor {
|
|
|
+ output.Write(NonUpperColor)
|
|
|
+ lastColor = &UpperColor
|
|
|
+ }
|
|
|
+ }
|
|
|
+ output.WriteByte(letter)
|
|
|
+ }
|
|
|
+ return output.Bytes()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func RenderBlueYellow(output *bytes.Buffer, text []byte) []byte {
|
|
|
output.Reset()
|
|
|
|