summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/gookit/color/printer.go
blob: 326aabc0b4531cf2259506f60d4cb3708487fc1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package color

import "fmt"

/*************************************************************
 * colored message Printer
 *************************************************************/

// PrinterFace interface
type PrinterFace interface {
	fmt.Stringer
	Sprint(a ...interface{}) string
	Sprintf(format string, a ...interface{}) string
	Print(a ...interface{})
	Printf(format string, a ...interface{})
	Println(a ...interface{})
}

// Printer a generic color message printer.
//
// Usage:
// 	p := &Printer{Code: "32;45;3"}
// 	p.Print("message")
type Printer struct {
	// NoColor disable color.
	NoColor bool
	// Code color code string. eg "32;45;3"
	Code string
}

// NewPrinter instance
func NewPrinter(colorCode string) *Printer {
	return &Printer{Code: colorCode}
}

// String returns color code string. eg: "32;45;3"
func (p *Printer) String() string {
	// panic("implement me")
	return p.Code
}

// Sprint returns rendering colored messages
func (p *Printer) Sprint(a ...interface{}) string {
	return RenderCode(p.String(), a...)
}

// Sprintf returns format and rendering colored messages
func (p *Printer) Sprintf(format string, a ...interface{}) string {
	return RenderString(p.String(), fmt.Sprintf(format, a...))
}

// Print rendering colored messages
func (p *Printer) Print(a ...interface{}) {
	doPrintV2(p.String(), fmt.Sprint(a...))
}

// Printf format and rendering colored messages
func (p *Printer) Printf(format string, a ...interface{}) {
	doPrintV2(p.String(), fmt.Sprintf(format, a...))
}

// Println rendering colored messages with newline
func (p *Printer) Println(a ...interface{}) {
	doPrintlnV2(p.Code, a)
}

// IsEmpty color code
func (p *Printer) IsEmpty() bool {
	return p.Code == ""
}

/*************************************************************
 * SimplePrinter struct
 *************************************************************/

// SimplePrinter use for quick use color print on inject to struct
type SimplePrinter struct{}

// Print message
func (s *SimplePrinter) Print(v ...interface{}) {
	Print(v...)
}

// Printf message
func (s *SimplePrinter) Printf(format string, v ...interface{}) {
	Printf(format, v...)
}

// Println message
func (s *SimplePrinter) Println(v ...interface{}) {
	Println(v...)
}

// Infof message
func (s *SimplePrinter) Infof(format string, a ...interface{}) {
	Info.Printf(format, a...)
}

// Infoln message
func (s *SimplePrinter) Infoln(a ...interface{}) {
	Info.Println(a...)
}

// Warnf message
func (s *SimplePrinter) Warnf(format string, a ...interface{}) {
	Warn.Printf(format, a...)
}

// Warnln message
func (s *SimplePrinter) Warnln(a ...interface{}) {
	Warn.Println(a...)
}

// Errorf message
func (s *SimplePrinter) Errorf(format string, a ...interface{}) {
	Error.Printf(format, a...)
}

// Errorln message
func (s *SimplePrinter) Errorln(a ...interface{}) {
	Error.Println(a...)
}