]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/mattn/go-colorable/noncolorable.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / mattn / go-colorable / noncolorable.go
1 package colorable
2
3 import (
4 "bytes"
5 "io"
6 )
7
8 // NonColorable hold writer but remove escape sequence.
9 type NonColorable struct {
10 out io.Writer
11 }
12
13 // NewNonColorable return new instance of Writer which remove escape sequence from Writer.
14 func NewNonColorable(w io.Writer) io.Writer {
15 return &NonColorable{out: w}
16 }
17
18 // Write write data on console
19 func (w *NonColorable) Write(data []byte) (n int, err error) {
20 er := bytes.NewReader(data)
21 var bw [1]byte
22 loop:
23 for {
24 c1, err := er.ReadByte()
25 if err != nil {
26 break loop
27 }
28 if c1 != 0x1b {
29 bw[0] = c1
30 w.out.Write(bw[:])
31 continue
32 }
33 c2, err := er.ReadByte()
34 if err != nil {
35 break loop
36 }
37 if c2 != 0x5b {
38 continue
39 }
40
41 var buf bytes.Buffer
42 for {
43 c, err := er.ReadByte()
44 if err != nil {
45 break loop
46 }
47 if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' {
48 break
49 }
50 buf.Write([]byte(string(c)))
51 }
52 }
53
54 return len(data), nil
55 }