diff --git a/src/ansi.go b/src/ansi.go index 638d7eff..bf00905e 100644 --- a/src/ansi.go +++ b/src/ansi.go @@ -310,20 +310,15 @@ func extractColor(str string, state *ansiState, proc func(string, *ansiState) bo return trimmed, nil, state } -func parseAnsiCode(s string, delimiter byte) (int, byte, string) { +func parseAnsiCode(s string) (int, string) { var remaining string var i int - if delimiter == 0 { - // Faster than strings.IndexAny(";:") - i = strings.IndexByte(s, ';') - if i < 0 { - i = strings.IndexByte(s, ':') - } - } else { - i = strings.IndexByte(s, delimiter) + // Faster than strings.IndexAny(";:") + i = strings.IndexByte(s, ';') + if i < 0 { + i = strings.IndexByte(s, ':') } if i >= 0 { - delimiter = s[i] remaining = s[i+1:] s = s[:i] } @@ -335,14 +330,14 @@ func parseAnsiCode(s string, delimiter byte) (int, byte, string) { for _, ch := range stringBytes(s) { ch -= '0' if ch > 9 { - return -1, delimiter, remaining + return -1, remaining } code = code*10 + int(ch) } - return code, delimiter, remaining + return code, remaining } - return -1, delimiter, remaining + return -1, remaining } func interpretCode(ansiCode string, prevState *ansiState) ansiState { @@ -378,11 +373,10 @@ func interpretCode(ansiCode string, prevState *ansiState) ansiState { state256 := 0 ptr := &state.fg - var delimiter byte count := 0 for len(ansiCode) != 0 { var num int - if num, delimiter, ansiCode = parseAnsiCode(ansiCode, delimiter); num != -1 { + if num, ansiCode = parseAnsiCode(ansiCode); num != -1 { count++ switch state256 { case 0: diff --git a/src/ansi_test.go b/src/ansi_test.go index 55f7fc08..d70224f5 100644 --- a/src/ansi_test.go +++ b/src/ansi_test.go @@ -381,7 +381,7 @@ func TestParseAnsiCode(t *testing.T) { {"-2", "", -1}, } for _, x := range tests { - n, _, s := parseAnsiCode(x.In, 0) + n, s := parseAnsiCode(x.In) if n != x.N || s != x.Exp { t.Fatalf("%q: got: (%d %q) want: (%d %q)", x.In, n, s, x.N, x.Exp) }