From 7d9461877aefd417b126e6c56ebfb7745fecef62 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 24 Oct 2021 16:07:42 +1100 Subject: [PATCH] fix issue with indentation --- pkg/utils/color.go | 2 +- pkg/utils/color_test.go | 198 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 pkg/utils/color_test.go diff --git a/pkg/utils/color.go b/pkg/utils/color.go index 0399377c7..d337aa691 100644 --- a/pkg/utils/color.go +++ b/pkg/utils/color.go @@ -6,7 +6,7 @@ import ( // Decolorise strips a string of color func Decolorise(str string) string { - re := regexp.MustCompile(`\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]`) + re := regexp.MustCompile(`\x1B\[([0-9]{1,3}(;[0-9]{1,3})*)?[mGK]`) return re.ReplaceAllString(str, "") } diff --git a/pkg/utils/color_test.go b/pkg/utils/color_test.go new file mode 100644 index 000000000..8fc6759ca --- /dev/null +++ b/pkg/utils/color_test.go @@ -0,0 +1,198 @@ +package utils + +import "testing" + +func TestDecolorise(t *testing.T) { + var tests = []struct { + input string + output string + }{ + { + input: "", + output: "", + }, + { + input: "hello", + output: "hello", + }, + { + input: "hello\x1b[31m", + output: "hello", + }, + { + input: "hello\x1b[31mworld", + output: "helloworld", + }, + { + input: "hello\x1b[31m\x1b[32mworld", + output: "helloworld", + }, + { + input: "hello\x1b[31m\x1b[32m\x1b[33mworld", + output: "helloworld", + }, + { + input: "hello\x1b[31m\x1b[32m\x1b[33m\x1b[34mworld", + output: "helloworld", + }, + { + input: "hello\x1b[31m\x1b[32m\x1b[33m\x1b[34m\x1b[35mworld", + output: "helloworld", + }, + { + input: "hello\x1b[31m\x1b[32m\x1b[33m\x1b[34m\x1b[35m\x1b[36mworld", + output: "helloworld", + }, + { + input: "hello\x1b[31m\x1b[32m\x1b[33m\x1b[34m\x1b[35m\x1b[36m\x1b[37mworld", + output: "helloworld", + }, + { + input: "hello\x1b[31m\x1b[32m\x1b[33m\x1b[34m\x1b[35m\x1b[36m\x1b[37mworld", + output: "helloworld", + }, + { + input: "\x1b[38;2;47;228;2mJD\x1b[0m", + output: "JD", + }, + { + input: "\x1b[38;2;160;47;213mRy\x1b[0m", + output: "Ry", + }, + { + input: "\x1b[38;2;179;217;72mSB\x1b[0m", + output: "SB", + }, + { + input: "\x1b[38;2;48;34;214mMK\x1b[0m", + output: "MK", + }, + { + input: "\x1b[38;2;28;152;222mAŁ\x1b[0m", + output: "AŁ", + }, + { + input: "\x1b[38;2;237;230;56mHH\x1b[0m", + output: "HH", + }, + { + input: "\x1b[38;2;63;232;69mmj\x1b[0m", + output: "mj", + }, + { + input: "\x1b[38;2;111;207;16mbl\x1b[0m", + output: "bl", + }, + { + input: "\x1b[38;2;250;31;163msa\x1b[0m", + output: "sa", + }, + { + input: "\x1b[38;2;195;10;54mbt\x1b[0m", + output: "bt", + }, + { + input: "\x1b[38;2;232;147;68mco\x1b[0m", + output: "co", + }, + { + input: "\x1b[38;2;116;180;35mDY\x1b[0m", + output: "DY", + }, + { + input: "\x1b[38;2;232;1;195mDB\x1b[0m", + output: "DB", + }, + { + input: "\x1b[38;2;245;101;55mLi\x1b[0m", + output: "Li", + }, + { + input: "\x1b[38;2;47;4;217mRy\x1b[0m", + output: "Ry", + }, + { + input: "\x1b[38;2;252;197;1mEl\x1b[0m", + output: "El", + }, + { + input: "\x1b[38;2;41;131;237mMG\x1b[0m", + output: "MG", + }, + { + input: "\x1b[38;2;65;240;62mDP\x1b[0m", + output: "DP", + }, + { + input: "\x1b[38;2;29;201;139mFM\x1b[0m", + output: "FM", + }, + { + input: "\x1b[38;2;141;20;198mEB\x1b[0m", + output: "EB", + }, + { + input: "\x1b[38;2;60;215;140mDM\x1b[0m", + output: "DM", + }, + { + input: "\x1b[38;2;247;63;38mDE\x1b[0m", + output: "DE", + }, + { + input: "\x1b[38;2;67;210;17mCB\x1b[0m", + output: "CB", + }, + { + input: "\x1b[38;2;220;190;84mST\x1b[0m", + output: "ST", + }, + { + input: "\x1b[38;2;137;239;6mER\x1b[0m", + output: "ER", + }, + { + input: "\x1b[38;2;47;249;225mAY\x1b[0m", + output: "AY", + }, + { + input: "\x1b[38;2;215;16;195mca\x1b[0m", + output: "ca", + }, + { + input: "\x1b[38;2;73;215;122mRV\x1b[0m", + output: "RV", + }, + { + input: "\x1b[38;2;118;15;221mJP\x1b[0m", + output: "JP", + }, + { + input: "\x1b[38;2;186;163;39mHJ\x1b[0m", + output: "HJ", + }, + { + input: "\x1b[38;2;54;222;111mDD\x1b[0m", + output: "DD", + }, + { + input: "\x1b[38;2;56;209;108mPZ\x1b[0m", + output: "PZ", + }, + { + input: "\x1b[38;2;9;179;216mPM\x1b[0m", + output: "PM", + }, + { + input: "\x1b[38;2;157;205;18mta\x1b[0m", + output: "ta", + }, + } + + for _, test := range tests { + output := Decolorise(test.input) + if output != test.output { + t.Errorf("Decolorise(%s) = %s, want %s", test.input, output, test.output) + } + } +}