diff options
author | Michael Muré <batolettre@gmail.com> | 2018-07-17 20:23:14 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-07-17 20:23:14 +0200 |
commit | 1332a6ec0a00b2475bc2b7b35b4c61425361d6b6 (patch) | |
tree | ff9ee93ea4a3bafc99d049d4f0c7b9f199ff0fec /vendor/github.com/mattn/go-colorable/noncolorable.go | |
parent | 9e6c687fca71103fd7550e25c471b9f805337b09 (diff) | |
download | git-bug-1332a6ec0a00b2475bc2b7b35b4c61425361d6b6.tar.gz |
ls: add some colors
Diffstat (limited to 'vendor/github.com/mattn/go-colorable/noncolorable.go')
-rw-r--r-- | vendor/github.com/mattn/go-colorable/noncolorable.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/vendor/github.com/mattn/go-colorable/noncolorable.go b/vendor/github.com/mattn/go-colorable/noncolorable.go new file mode 100644 index 00000000..9721e16f --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/noncolorable.go @@ -0,0 +1,55 @@ +package colorable + +import ( + "bytes" + "io" +) + +// NonColorable hold writer but remove escape sequence. +type NonColorable struct { + out io.Writer +} + +// NewNonColorable return new instance of Writer which remove escape sequence from Writer. +func NewNonColorable(w io.Writer) io.Writer { + return &NonColorable{out: w} +} + +// Write write data on console +func (w *NonColorable) Write(data []byte) (n int, err error) { + er := bytes.NewReader(data) + var bw [1]byte +loop: + for { + c1, err := er.ReadByte() + if err != nil { + break loop + } + if c1 != 0x1b { + bw[0] = c1 + w.out.Write(bw[:]) + continue + } + c2, err := er.ReadByte() + if err != nil { + break loop + } + if c2 != 0x5b { + continue + } + + var buf bytes.Buffer + for { + c, err := er.ReadByte() + if err != nil { + break loop + } + if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' { + break + } + buf.Write([]byte(string(c))) + } + } + + return len(data), nil +} |