Skip to content

Commit a7dfbc4

Browse files
committed
fix: handleSgr: underline styles were not being handled correctly
Fixes: #26
1 parent 6c1024d commit a7dfbc4

2 files changed

Lines changed: 32 additions & 26 deletions

File tree

main_test.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -141,21 +141,22 @@ var others = map[string]string{
141141
}
142142

143143
var sgr = map[string]string{
144-
"reset": ansi.ResetStyle + strings.Replace(ansi.ResetStyle, "m", "0m", 1),
145-
"style 1": new(ansi.Style).Bold().Faint().Italic().CurlyUnderline().String(),
146-
"style 2": new(ansi.Style).SlowBlink().Reverse().Strikethrough().String(),
147-
"style 3": new(ansi.Style).RapidBlink().BackgroundColor(ansi.Green).ForegroundColor(ansi.BrightGreen).UnderlineColor(ansi.Blue).String(),
148-
"style 4": new(ansi.Style).BackgroundColor(ansi.BrightYellow).ForegroundColor(ansi.Black).UnderlineColor(ansi.BrightCyan).String(),
149-
"style 5": new(ansi.Style).BackgroundColor(ansi.TrueColor(0xffeeaa)).ForegroundColor(ansi.TrueColor(0xffeeaa)).UnderlineColor(ansi.TrueColor(0xffeeaa)).String(),
150-
"style 6": new(ansi.Style).BackgroundColor(ansi.ExtendedColor(255)).ForegroundColor(ansi.ExtendedColor(255)).UnderlineColor(ansi.ExtendedColor(255)).String(),
151-
"style 7": new(ansi.Style).NoUnderline().NoBold().NoItalic().NormalIntensity().NoBlink().NoConceal().NoReverse().NoStrikethrough().String(),
152-
"style 8": new(ansi.Style).UnderlineStyle(ansi.NoUnderlineStyle).DefaultBackgroundColor().String(),
153-
"style 9": strings.Replace(new(ansi.Style).UnderlineStyle(ansi.SingleUnderlineStyle).DefaultForegroundColor().String(), "[4", "[4:1", 1),
154-
"style 10": new(ansi.Style).UnderlineStyle(ansi.DoubleUnderlineStyle).String(),
155-
"style 11": new(ansi.Style).UnderlineStyle(ansi.CurlyUnderlineStyle).String(),
156-
"style 12": new(ansi.Style).UnderlineStyle(ansi.DottedUnderlineStyle).String(),
157-
"style 13": new(ansi.Style).UnderlineStyle(ansi.DashedUnderlineStyle).Conceal().String(),
158-
"empty values": strings.Replace(new(ansi.Style).Bold().String(), "[", "[;;;", 1),
144+
"reset": ansi.ResetStyle + strings.Replace(ansi.ResetStyle, "m", "0m", 1),
145+
"style 1": new(ansi.Style).Bold().Faint().Italic().CurlyUnderline().String(),
146+
"style 2": new(ansi.Style).SlowBlink().Reverse().Strikethrough().String(),
147+
"style 3": new(ansi.Style).RapidBlink().BackgroundColor(ansi.Green).ForegroundColor(ansi.BrightGreen).UnderlineColor(ansi.Blue).String(),
148+
"style 4": new(ansi.Style).BackgroundColor(ansi.BrightYellow).ForegroundColor(ansi.Black).UnderlineColor(ansi.BrightCyan).String(),
149+
"style 5": new(ansi.Style).BackgroundColor(ansi.TrueColor(0xffeeaa)).ForegroundColor(ansi.TrueColor(0xffeeaa)).UnderlineColor(ansi.TrueColor(0xffeeaa)).String(),
150+
"style 6": new(ansi.Style).BackgroundColor(ansi.ExtendedColor(255)).ForegroundColor(ansi.ExtendedColor(255)).UnderlineColor(ansi.ExtendedColor(255)).String(),
151+
"style 7": new(ansi.Style).NoUnderline().NoBold().NoItalic().NormalIntensity().NoBlink().NoConceal().NoReverse().NoStrikethrough().String(),
152+
"style 8": new(ansi.Style).UnderlineStyle(ansi.NoUnderlineStyle).DefaultBackgroundColor().String(),
153+
"style 9": strings.Replace(new(ansi.Style).UnderlineStyle(ansi.SingleUnderlineStyle).DefaultForegroundColor().String(), "[4", "[4:1", 1),
154+
"style 10": new(ansi.Style).UnderlineStyle(ansi.DoubleUnderlineStyle).String(),
155+
"style 11": new(ansi.Style).UnderlineStyle(ansi.CurlyUnderlineStyle).String(),
156+
"style 12": new(ansi.Style).UnderlineStyle(ansi.DottedUnderlineStyle).String(),
157+
"style 13": new(ansi.Style).UnderlineStyle(ansi.DashedUnderlineStyle).Conceal().String(),
158+
"empty values": strings.Replace(new(ansi.Style).Bold().String(), "[", "[;;;", 1),
159+
"underlined text, but no bold": new(ansi.Style).UnderlineStyle(ansi.CurlyUnderlineStyle).Bold().String(),
159160
}
160161

161162
var title = map[string]string{

sgr.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,22 @@ func handleSgr(parser *ansi.Parser) (string, error) { //nolint:unparam
4040
str += "Underline"
4141
if param.HasMore() {
4242
// Handle underline styles
43-
switch next := ansi.Param(parser.Params[i+1]); next.Param() {
44-
case 1:
45-
str += " (Single)"
46-
case 2:
47-
str += " (Double)"
48-
case 3:
49-
str += " (Curly)"
50-
case 4:
51-
str += " (Dotted)"
52-
case 5:
53-
str += " (Dashed)"
43+
next := ansi.Param(parser.Params[i+1])
44+
switch p := next.Param(); p {
45+
case 1, 2, 3, 4, 5:
46+
i++
47+
switch p {
48+
case 1:
49+
str += " (Single)"
50+
case 2:
51+
str += " (Double)"
52+
case 3:
53+
str += " (Curly)"
54+
case 4:
55+
str += " (Dotted)"
56+
case 5:
57+
str += " (Dashed)"
58+
}
5459
}
5560
}
5661
case 5, 6:

0 commit comments

Comments
 (0)