color.go

v0.2.0
Doc Versions Source
1
package scribe
2
3
import "log/slog"
4
5
// Color represents an ANSI color code.
6
type Color string
7
8
// ANSI color codes.
9
const (
10
	Reset   Color = "\033[0m"
11
	Bold    Color = "\033[1m"
12
	Faint   Color = "\033[2m"
13
	Italic  Color = "\033[3m"
14
	Black   Color = "\033[30m"
15
	Red     Color = "\033[31m"
16
	Green   Color = "\033[32m"
17
	Yellow  Color = "\033[33m"
18
	Blue    Color = "\033[34m"
19
	Magenta Color = "\033[35m"
20
	Cyan    Color = "\033[36m"
21
	White   Color = "\033[37m"
22
	Gray    Color = "\033[90m"
23
24
	// Bright variants
25
	BrightRed     Color = "\033[91m"
26
	BrightGreen   Color = "\033[92m"
27
	BrightYellow  Color = "\033[93m"
28
	BrightBlue    Color = "\033[94m"
29
	BrightMagenta Color = "\033[95m"
30
	BrightCyan    Color = "\033[96m"
31
	BrightWhite   Color = "\033[97m"
32
)
33
34
// DefaultLevelColors returns sensible default colors for log levels.
35
func DefaultLevelColors() map[slog.Level]Color {
36
	return map[slog.Level]Color{
37
		slog.LevelDebug: Gray,
38
		slog.LevelInfo:  Green,
39
		slog.LevelWarn:  Yellow,
40
		slog.LevelError: Red,
41
	}
42
}
43
44
// Wrap wraps a string with this color and resets at the end.
45
func (c Color) Wrap(s string) string {
46
	return string(c) + s + string(Reset)
47
}
48
49
// String returns the ANSI escape sequence.
50
func (c Color) String() string {
51
	return string(c)
52
}
53

Source Files