commit 7824063
Hubert Hirtz
·
2020-06-03 20:31:57 +0000 UTC
parent 2236a7d
Nick colors
2 files changed,
+29,
-5
+27,
-4
1@@ -7,6 +7,7 @@ import (
2 "git.sr.ht/~taiite/senpai/irc"
3 "git.sr.ht/~taiite/senpai/ui"
4 "github.com/gdamore/tcell"
5+ "hash/fnv"
6 "log"
7 "os/user"
8 "strings"
9@@ -167,8 +168,10 @@ func handleInput(s *irc.Session, buffer, content string) {
10 }
11
12 func formatIRCMessage(nick, content string) (line string) {
13+ c := color(nick)
14+
15 if content == "" {
16- line = fmt.Sprintf("\x02%s\x00:", nick)
17+ line = fmt.Sprintf("%s%s\x00:", string(c[:]), nick)
18 return
19 }
20
21@@ -176,15 +179,35 @@ func formatIRCMessage(nick, content string) (line string) {
22 content = strings.TrimSuffix(content[1:], "\x01")
23
24 if strings.HasPrefix(content, "ACTION") {
25- line = fmt.Sprintf("*\x02%s\x00%s", nick, content[6:])
26+ line = fmt.Sprintf("%s%s\x00%s", string(c[:]), nick, content[6:])
27 } else {
28- line = fmt.Sprintf("\x1dCTCP request from\x1d \x02%s\x00: %s", nick, content)
29+ line = fmt.Sprintf("\x1dCTCP request from\x1d %s%s\x00: %s", string(c[:]), nick, content)
30 }
31
32 return
33 }
34
35- line = fmt.Sprintf("\x02%s\x00 %s", nick, content)
36+ line = fmt.Sprintf("%s%s\x00: %s", string(c[:]), nick, content)
37+
38+ return
39+}
40+
41+func color(nick string) (c [3]rune) {
42+ h := fnv.New32()
43+ _, _ = h.Write([]byte(nick))
44+
45+ sum := h.Sum32() % 14
46+
47+ if 1 <= sum {
48+ sum++
49+ }
50+ if 8 <= sum {
51+ sum++
52+ }
53+
54+ c[0] = '\x03'
55+ c[1] = rune(sum/10) + '0'
56+ c[2] = rune(sum%10) + '0'
57
58 return
59 }
M
ui/ui.go
+2,
-1
1@@ -364,7 +364,8 @@ func (ui *UI) drawBuffer() {
2 bold = false
3 italic = false
4 underline = false
5- st = st.Normal()
6+ colorState = 0
7+ st = tcell.StyleDefault
8 continue
9 }
10 if r == 0x02 {