Support for multiple modifiers in colorschemes (#1772)

* Support for multiple modifiers (eg. "bold italic")

* Test for multiple modifiers (bold + italic + underline)
This commit is contained in:
franekjel
2020-07-14 23:58:03 +02:00
committed by GitHub
parent 781a2dd826
commit 1a89d2095d
2 changed files with 14 additions and 6 deletions

View File

@@ -117,16 +117,12 @@ func ParseColorscheme(text string) (map[string]tcell.Style, error) {
// StringToStyle returns a style from a string // StringToStyle returns a style from a string
// The strings must be in the format "extra foregroundcolor,backgroundcolor" // The strings must be in the format "extra foregroundcolor,backgroundcolor"
// The 'extra' can be bold, reverse, or underline // The 'extra' can be bold, reverse, italic or underline
func StringToStyle(str string) tcell.Style { func StringToStyle(str string) tcell.Style {
var fg, bg string var fg, bg string
spaceSplit := strings.Split(str, " ") spaceSplit := strings.Split(str, " ")
var split []string var split []string
if len(spaceSplit) > 1 { split = strings.Split(spaceSplit[len(spaceSplit)-1], ",")
split = strings.Split(spaceSplit[1], ",")
} else {
split = strings.Split(str, ",")
}
if len(split) > 1 { if len(split) > 1 {
fg, bg = split[0], split[1] fg, bg = split[0], split[1]
} else { } else {

View File

@@ -26,6 +26,18 @@ func TestAttributeStringToStyle(t *testing.T) {
assert.NotEqual(t, 0, attr&tcell.AttrBold) assert.NotEqual(t, 0, attr&tcell.AttrBold)
} }
func TestMultiAttributesStringToStyle(t *testing.T) {
s := StringToStyle("bold italic underline cyan,brightcyan")
fg, bg, attr := s.Decompose()
assert.Equal(t, tcell.ColorTeal, fg)
assert.Equal(t, tcell.ColorAqua, bg)
assert.NotEqual(t, 0, attr&tcell.AttrBold)
assert.NotEqual(t, 0, attr&tcell.AttrItalic)
assert.NotEqual(t, 0, attr&tcell.AttrUnderline)
}
func TestColor256StringToStyle(t *testing.T) { func TestColor256StringToStyle(t *testing.T) {
s := StringToStyle("128,60") s := StringToStyle("128,60")